我是JavaFX的新手并且遇到了一些问题。
假设我有两个fxml文件,带有相应的控制器类。 每个fxml上都有一个按钮,它应该打开另一个屏幕并传递一个参数。
有人可以提供一个如何完成此操作的示例,谷歌没有任何帮助。
答案 0 :(得分:1)
“屏幕”是指JavaFX Stage实例,对吧?如果是这样,那很简单:
唯一有点不寻常的是获取控制器参考。您需要创建FXMLoader的实例。它不适用于通常调用的静态方法:
(应用程序的主要类别)
public class MyFXMLApp extends Application {
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("MainForm.fxml"));
Parent root = (Parent) loader.load();
// as soon as the load() method has been invoked, the scene graph and the
// controller instance are availlable:
MainFormController controller = loader.getController();
controller.setText("Ready.");
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
// ...
(控制器)
public class MainFormController implements Initializable {
// some ui control:
@FXML
private Label label;
// JavaFX property for values that shall be accessible from outside:
private final StringProperty text = new SimpleStringProperty();
public String getText() {
return text.get();
}
public void setText(String value) {
text.set(value);
}
public StringProperty textProperty() {
return text;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
System.out.println("MainFormController.initialize");
this.label.textProperty().bind(this.text);
}
// ...
该示例使用JavaFX属性在控制器中保存“参数” - 因此,值和它的更改很容易被观察,并且属性可能绑定到任何其他字符串属性。
答案 1 :(得分:0)
this.myUsers = us.getUsers();