我已经完成了类似的question,但它使用了Singleton Class。我发现的其他类似问题主要是嵌套控制器。所以我提出这个简单的问题,希望得到两个不同FXML的TextFields的绑定文本属性的答案。
我在两个不同的fxmls中有两个文本域,这些是他们的控制器类:
TextField1Controller.java
public class TextField1Controller implements Initializable{
@FXML
TextField txt1FxId;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
}
TextField2Controller.java
public class TextField2Controller implements Initializable{
@FXML
TextField txt2FxId;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
}
MainApp.java
public class MainApp extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage1) throws Exception {
AnchorPane pane1 = FXMLLoader.load(this.getClass().getResource("TextField1.fxml"));
AnchorPane pane2 = FXMLLoader.load(this.getClass().getResource("TextField2.fxml"));
Stage stage2 = new Stage();
stage1.setScene(new Scene(pane1));
stage2.setScene(new Scene(pane2));
stage1.show();
stage2.show();
}
}
如何在MainApp.java中绑定这些文本字段的text属性,以便在另一个文本字段上打字,反之亦然?
答案 0 :(得分:4)
方法是:
<强>实施强>
放入吸气剂
public TextField getTxt1FxId() {
return txt1FxId;
}
进入TextField1Controller
课程,getTxt2FxId()
进入第二职业
主应用程序,
@Override
public void start(Stage stage1) throws Exception {
FXMLLoader loader = new FXMLLoader();
Parent pane1 = (Parent) loader.load(getClass().getResource("TextField1.fxml").openStream());
TextField1Controller controller1 = loader.getController();
loader = new FXMLLoader();
Parent pane2 = (Parent) loader.load(getClass().getResource("TextField2.fxml").openStream());
TextField2Controller controller2 = loader.getController();
controller1.getTxt1FxId().textProperty().bindBidirectional(
controller2.getTxt2FxId().textProperty());
Stage stage2 = new Stage();
stage1.setScene(new Scene(pane1));
stage2.setScene(new Scene(pane2));
stage1.show();
stage2.show();
}