【发布时间】:2016-01-22 04:22:14
【问题描述】:
我在这个链接中发现了一些类似的东西 How to call functions on the stage in JavaFX's controller file
这是我在其中一个答案中发现的
StageTrackingSample.java
public class StageTrackingSample extends Application {
@Override public void start(final Stage stage) throws Exception {
final FXMLLoader loader = new FXMLLoader(
getClass().getResource(
"stagetracking.fxml"
)
);
final Parent root = (Parent) loader.load();
final StageTrackingController controller = loader.getController();
controller.initData(stage);
stage.setScene(new Scene(root));
stage.show();
}
public static void main(String[] args) { launch(args); }
}
StageTrackingController.java
public class StageTrackingController {
@FXML private Label stageX;
public void initialize() {}
public void initData(final Stage stage) {
stageX.textProperty().bind(
Bindings.format(
"(%1$.2f, %2$.2f)",
stage.xProperty(),
stage.yProperty()
)
);
}
}
我想将 progressIndicator 定位在窗口的中间,所以我在我的控制器类中尝试了这个 控制器.java
public void initInterface(Stage stage) {
progressIndicator.layoutXProperty().bind(stage.widthProperty().divide(2));
progressIndicator.layoutYProperty().bind(stage.heightProperty().divide(2));
}
这在 Main.java 中
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
final FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
final Parent root = loader.load();
final Controller controller = loader.getController();
final Scene scene = new Scene(root);
controller.initInterface(primaryStage);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
即使我尝试将场景或锚窗格(在 fxml 文件中定义)作为参数传递给 initInterface 方法,它也不起作用,似乎绑定 progressIndicator 属性有问题
【问题讨论】:
标签: javafx-8