当前位置: 首页 > 知识库问答 >
问题:

JavaFX-8-在SplitPane容器中找不到任何节点

刘绍晖
2023-03-14

我需要在应用程序启动时加载JavaFX TreeView数据。问题是节点查找()方法总是返回null。

密码

public class Main extends Application {

    public static final String APPLICATION_NAME = "testapp" ;

    public static void main(String args[]) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        String fxml = "/fxml/main-window.fxml";
        String globalCss = "/styles/main.css";
        FXMLLoader loader = new FXMLLoader(getClass().getResource(fxml));
        Parent root = (Parent) loader.load();
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.getScene().getStylesheets().add(globalCss);
        primaryStage.setMaximized(true);

        TreeView treevw = (TreeView) scene.lookup("#treevw");
        // lazy init here

        primaryStage.show();
    }
}

断续器

http://pastebin.com/aC2gHMjp

java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

我找到了这个解决方案,但它对我(两者)都不起作用。

有人能帮忙解决这个问题吗?

共有2个答案

蒯宇定
2023-03-14

根据我的经验,JavaFX 拆分窗格的结构与 Pane 类的其他子类具有不同的结构。我遇到了这个问题,我如何修复它是调用getItems()来获取分流板的项目,它应该是一个容器类型,例如锚窗格,堆栈窗格等,然后在那里执行查找方法,它工作得很好。

FXMLLoader pageLoader = new FXMLLoader(LoginPageController.class.getResource("FriendListPage.fxml"));
        SplitPane friendListPage = (SplitPane) pageLoader.load();    

AnchorPane addFriendSubWindow = (AnchorPane) friendListPage.getItems().get(0);

        Button btnCloseFriendWindow = (Button) addFriendSubWindow.lookup("#btnCloseFriendWindow");
        
        btnCloseFriendWindow.setOnAction(event -> {
            if(!extraPanelContainer.getChildren().isEmpty())
                extraPanelContainer.getChildren().clear();
            clearFriendList(friendListPage);
        });

btncloseofriendwindow . setonaction()过去常常返回null,直到我使用了这种方法。

西门奇希
2023-03-14

lookup(…)通常会返回null,直到进行CSS传递,这通常意味着您需要在显示阶段后(但可能在那之后)执行此操作。

但是这真的不是做你想做的事情的正确方法。定义一个控制器,在你的TreeView上设置一个fx: id并在控制器的novalize()方法中执行初始化。

 类似资料:
  • 我尝试在我的JavaFX应用程序中实现一个TreeView。但不幸的是,没有项目显示,但我找不到一个问题。我搜索了一些例子,并像他们一样做了。 这是我的控制器代码: 我的FXML代码:

  • 本文向大家介绍如何在JavaFX中创建SplitPane?,包括了如何在JavaFX中创建SplitPane?的使用技巧和注意事项,需要的朋友参考一下 以下示例演示了SplitPane的创建。 输出结果

  • 连接到数据库 我在那里没有看到任何桌子,除了原木 我查看了日志,changelog已经在那里工作,并且已经创建了表。

  • 对于我的JavaFX GUI,我必须使用一些拆分窗格。但是出现了一个问题:我必须使用户单击拆分窗格上的按钮时,此拆分窗格会隐藏其中一个侧面窗格,并且需要再单击一次才能将此侧窗格重置为可见。 我在这里发现了另一个和我一样的问题:我们能否在Javafx SplitPane上添加一个OneTouchExpansable按钮,比如swing JSplitPane,但这个按钮很老,除了“不,你不能”之外没有

  • 我正在使用Eclipse和PowerShell。我已经用Eclipse将一个java项目导出到一个可运行的JAR(test13.05.jar)中,我想从PowerShell打开它。这个项目使用javafx,所以我已经将javafx-sdk-17.0.2文件复制到包含我的项目的文件夹中。 然后,我用PowerShell进入这个文件夹,键入 结果是: 错误:JavaFX运行时组件丢失,并且需要运行此应

  • 问题内容: 我想重写JDK 的实现并重新编译。 在哪里可以找到JDK8 / JavaFX 8的源代码? 问题答案: JavaFX 8的源可在以下位置获得: http://hg.openjdk.java.net/openjfx/8/master/rt 今天,JavaFX 8几乎是完全开源的。 使用OpenJDK 8构建JavaFX 8的说明