JavaFX textarea不显示更改的值

时间:2014-06-26 04:32:11

标签: user-interface tabs javafx updating

大家好,我使用jdk 1.8和NetBeans版本8以及SceneBuilder 2.2。我有Main.fxml和MainController文件,底部有2个标签和一个TextArea,可以打印出状态信息。

Login.fxml是一个标签,我通过include在scenebuilder中附加到Main.fxml第一个标签。 它有自己的控制器和一个按钮,需要将信息打印到MainController中的TextArea。我可以使用FXMLLoader访问TextArea并更改值,但它不会在UI中更新。让我们说@FXML LogID是MainController中的TextArea,这是LoginController中的代码:

@FXML     私人按钮btn;

@Override
public void initialize(URL url, ResourceBundle rb) {

    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            try {
                FXMLLoader fxmlLoader = new FXMLLoader();
                fxmlLoader.setLocation(getClass().getResource("Main.fxml"));
                AnchorPane pane = fxmlLoader.load();
                MainController control = (MainController) fxmlLoader.getController();

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        Platform.runLater(new Runnable() {

                            @Override
                            public void run() {
                                control.LogID.appendText("Hello");
                                System.out.println(control.LogID.getText()); 
                                //prints "hello" in console but not the ui
                            }
                        });
                    }
                }).start();
            } catch (IOException ex) {
                Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });
}   

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过大约一周的尝试,我可以想出一个不同的解决方案。 这将在不使用FXMLLoader();

的情况下更新它

我所做的就是给Login.fxml一个bootpane一个fx:id并保持打印getParent()到控制台直到我得到root所以.. @FXML AnchorPane paneID; //在LoginController.java中

//在platform.runLater中我运行了底部代码

TextArea area =(TextArea)paneID.getParent()。getParent()。getParent()。lookup(“#LogID”);                         area.appendText( “你好\ n”);

首先,getParent是标签内容区域

第二个tabpane

主要的锚板