目标是打印标签的CURRENT文本。标签在整个程序中不断变化,使用我目前的方法,我只能检索标签的初始化值。
我用来检索控制器实例的内容:
public class ShowWindow {
public static <T> T getController(String path){
try {
FXMLLoader fxmlLoader = new FXMLLoader(ShowWindow.class.getResource(path));
Parent root = fxmlLoader.load();
return fxmlLoader.getController();
}catch(IOException ex){
ex.printStackTrace();
}
return null;
}
}
这是从main调用函数的块:
private void close(Stage stage) {
String name = ShowWindow.<MainController>getController(fxmlFile).nameLabel.getText();
System.out.println(name);
stage.close();
}
主控制器
public class MainController implements Initializable {
// Label.
// Code that changes label.
}
一切都有帮助,并提前感谢。
编辑: 另一个show window函数在返回fxml文件的控制器时似乎有效,但在这种情况下它显示文件然后返回控制器。
public class ShowWindow {
public static <T> T showWindow(String path){
try {
FXMLLoader fxmlLoader = new FXMLLoader(ShowWindow.class.getResource(path));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(new Scene(root));
stage.showAndWait();
return fxmlLoader.getController();
}catch(IOException ex){
ex.printStackTrace();
}
return null;
}
}
答案 0 :(得分:0)
这是物业会派上用场的地方。您的代码目前仅检索初始值,使用属性监视标签文本何时更改:
label.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println(newValue);
}
});