javaFx修改Controller中textField值无效问题解决

170 阅读1分钟

某Controller中有TextField一文本域,但是怎么调用setText都无法赋值。

调用修改

FXMLLoader loader2 = new FXMLLoader();
loader2.setLocation(MainApp.class.getResource("view/balabala.fxml"));
anchorPane = (AnchorPane) loader2.load();
loader2.getController().setDevice();

修改值

public void setDevice() {
     id.setText("111");
    }

以为是值绑定问题、监听问题、多scene切换问题等等。 怎么也没想到是controller多次实例化问题。因为通过loader会实例化Controller,我在初始化时使用了loader,在修改值时有一次调用了loader,因为已经不是最初的controller了。

解决方案:写了一个缓存class,在controller初始化时存入缓存,之后调用通过该class调用方法。

参考:www.it1352.com/2772696.htm…