java - 在场景渲染之前在 Initialize 中调用查找

标签 java javafx

我想使用下面的代码来同步滚动条。

Node n1 = listView1.lookup(".scroll-bar");
if (n1 instanceof ScrollBar) {
    final ScrollBar bar1 = (ScrollBar) n1;
    Node n2 = listView2.lookup(".scroll-bar");
    if (n2 instanceof ScrollBar) {
        final ScrollBar bar2 = (ScrollBar) n2;
        bar1.valueProperty().bindBidirectional(bar2.valueProperty());
    }
}

我想在场景的 Initialize() 方法中运行这些代码行。 不幸的是,这些代码行要求场景已经渲染。 有没有办法在没有任何用户输入的情况下渲染场景后运行这些行?

最佳答案

这个丑陋的 hack 似乎有效:

public class Controller {

    @FXML
    private ListView<String> listView1 ;
    @FXML
    private ListView<String> listView2 ;

    @FXML
    private Parent root ;

    public void initialize() {
        root.sceneProperty().addListener((obs, oldScene, newScene)  -> {
           if (newScene != null) {
               root.applyCss();
               Node n1 = listView1.lookup(".scroll-bar");
               System.out.println(n1);
               if (n1 instanceof ScrollBar) {
                   final ScrollBar bar1 = (ScrollBar) n1;
                   Node n2 = listView2.lookup(".scroll-bar");
                   System.out.println(n2);
                   if (n2 instanceof ScrollBar) {
                       final ScrollBar bar2 = (ScrollBar) n2;
                       bar1.valueProperty().bindBidirectional(bar2.valueProperty());
                   }
               }

           }
        });

    }
}

关于java - 在场景渲染之前在 Initialize 中调用查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734490/

相关文章:

mysql - (JavaFx+PHPMyAdmin) 连续执行两个方法时出现 SQL 异常(SELECT 然后 INSERT)

: es2, sw 的 JavaFX 图形设备初始化失败

java - 配置 Eclipse 项目的构建路径

java - 无论如何要创建一个没有预身份验证的 Oracle 数据库连接池吗?

java - 在桌面应用程序中存储散列、盐、键的位置

java - JDBI,使用 sql 查询检索数据到自定义对象(构造函数)而不是 Map

java - datasnapshot.getvalue() 不起作用并导致应用程序崩溃

image - JavaFX : Canvas to Image in non GUI Thread

java - 以编程方式更改嵌套元素的 CSS 规则

用于大型数据库表的 JavaFx TableView CRUD