在JavaFx中,我目前正在尝试更改
primaryStage
通过绑定。
primaryStage.setScene(scene);
primaryStage.setHeight(400.0);
primaryStage.widthProperty().bindBidirectional(textField.textProperty());
这只是一个作业问题,没有意义。
不幸的是primaryStage
是readOnlyDoubleProperty
。我可以更改此设置以获得写权限吗?
我知道,可以通过EventHandler
来更改窗口大小,但是我想通过带有绑定的TextField
来动态更改窗口大小。
因此,任何新输入的数字都会扩大窗口。
有什么想法吗?
答案 0 :(得分:0)
这绝对是可能的,我希望有一种更好的方法,并且永远不要使用此代码,但这正是我设法做到的
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
//Allows for only numeric input
textField.setTextFormatter(new TextFormatter<>(change -> {
if (change.getText().matches("[0-9]*"))
return change;
else
return null;
}));
primaryStage.setScene(new Scene(textField));
primaryStage.setHeight(200.0);
//Allows Program to start without error
primaryStage.setMaxWidth(200);
//Binds min and max to ensure stage width change due to only 1 possible size
primaryStage.minWidthProperty().bind(primaryStage.maxWidthProperty());
//Bind textfield to width
textField.textProperty().bindBidirectional(primaryStage.maxWidthProperty(), new NumberStringConverter());
primaryStage.show();
}
}