JavaFX:将属性绑定到窗格时遇到问题
我是一个刚刚开始学习JavaFX的初学者,我似乎在我的程序中犯了同样的错误。例如,在下面的代码中,我试图绘制X轴和Y轴,并将其绑定到窗格宽度和高度的一半。执行时,轴非常小,位于左上角,但当您调整应用程序窗口的大小时,轴的大小会慢慢增加,直到窗口不再调整大小为止JavaFX:将属性绑定到窗格时遇到问题,java,javafx,Java,Javafx,我是一个刚刚开始学习JavaFX的初学者,我似乎在我的程序中犯了同样的错误。例如,在下面的代码中,我试图绘制X轴和Y轴,并将其绑定到窗格宽度和高度的一半。执行时,轴非常小,位于左上角,但当您调整应用程序窗口的大小时,轴的大小会慢慢增加,直到窗口不再调整大小为止 public class Debug extends Application { @Override public void start(Stage primaryStage) { Pane pane =
public class Debug extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
GraphFunc test = new GraphFunc();
pane.getChildren().add(test);
Scene scene = new Scene(pane, 500, 500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class GraphFunc extends Pane {
private double xAxisSpan, yAxisSpan;
public GraphFunc() {
xAxisSpan = 100;
yAxisSpan = 100;
drawAxes();
}
private void drawAxes() {
Line xAxis = new Line(0, 50, 100, 50);
Line yAxis = new Line(50, 0, 50, 100);
xAxis.setStartX(0);
xAxis.startYProperty().bind(heightProperty().divide(2));
xAxis.endXProperty().bind(widthProperty());
xAxis.endYProperty().bind(heightProperty().divide(2));
yAxis.startXProperty().bind(widthProperty().divide(2));
yAxis.setStartY(0);
yAxis.endXProperty().bind(widthProperty().divide(2));
yAxis.endYProperty().bind(heightProperty());
getChildren().addAll(xAxis, yAxis);
}
}
我很困惑,因为当窗格更改为StackPane时,不会发生这种情况。另外,如果我将drawAxes()中的代码移到start()并将行添加到窗格中,它也不会这样做。请解释一下,在研究和玩弄它之后,我似乎无法理解发生了什么。这是因为窗格。窗格用于需要绝对定位子对象时使用 这来自Oracle文档: 此类可直接用于需要绝对定位子对象的情况,因为它除了将可调整大小的子对象调整为其首选大小之外,不会执行布局。应用程序负责定位子项,因为在布局过程中,窗格会单独保留这些位置 如果从场景中删除宽度和高度,而是直接将宽度和高度设置为on,以进行如下测试:
公共作废开始(阶段primaryStage){
GridPane=新建GridPane();
GraphFunc测试=新GraphFunc();
测试。设置预大小(500500);
pane.getChildren().add(测试);
场景=新场景(窗格);
初级阶段。场景(场景);
primaryStage.show();
}
Pane pane = new Pane();
GraphFunc test = new GraphFunc();
pane.getChildren().add(test);
Scene scene = new Scene(pane, 500, 500);