gpt4 book ai didi

JavaFx:如何使立方体适应窗口大小调整

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:51 25 4
gpt4 key购买 nike

我在进行 javafx 练习时遇到问题。基本上,问题是制作一个矩形立方体,并使其在您调整窗口大小时自动扩展或收缩。我已经完成了该程序的第一部分,但第二部分遇到了困难。这是我的代码:

public void start(Stage primaryStage) {
Pane pane = new Pane();

//Draw two rectangles
Rectangle upper = new Rectangle(140, 100, 120, 100);
upper.setFill(null);
upper.setStroke(Color.BLACK);
Rectangle lower = new Rectangle(100, 140, 120, 100);
lower.setFill(null);
lower.setStroke(Color.BLACK);

//Draw the line connecting them
Line ul = new Line(140, 100, 100, 140);
Line ur = new Line(260, 100, 220, 140);
Line ll = new Line(140, 200, 100, 240);
Line lr = new Line(260, 200, 220, 240);

pane.getChildren().addAll(upper, lower, ul, ur, ll, lr);

Scene scene = new Scene(pane, 200, 200);

primaryStage.setTitle("Exercise14");
primaryStage.setScene(scene);
primaryStage.show();
}

矩形立方体如下所示,但我不知道如何在调整窗口大小时使其扩展或收缩:

cube is drawn

cube does not resize properly

我想我需要将每个单独的形状绑定(bind)到 Pane 或其他东西,但我不知道从哪里开始。希望能指出正确的方向。谢谢。

最佳答案

您需要向场景添加更改监听器,并计算立方体相对于场景的宽度和高度的尺寸。像这样的事情:

ChangeListener<Number> listenerX = new ChangeListener<Number>() {

@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

System.out.println( "X: observable: " + observable + ", oldValue: " + oldValue.doubleValue() + ", newValue: " + newValue.doubleValue());

// TODO:
// Lines:
// line.setStartX(...)
// line.setStartY(...)
// line.setEndX(...)
// line.setEndY(...)
//
// Rectangles:
// rect.setTranslateX(...)
// rect.setTranslateY(...)
// rect.setWidth(...)
// rect.setHeight(...)
// hint: instead of translate you can use rect.relocate(..., ...). translate is relative, relocate applies layoutX/Y and translateX/Y

}
};

ChangeListener<Number> listenerY = new ChangeListener<Number>() {

@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

System.out.println( "Y: observable: " + observable + ", oldValue: " + oldValue.doubleValue() + ", newValue: " + newValue.doubleValue());

// similare to listenerX

}
};

scene.widthProperty().addListener( listenerX);
scene.heightProperty().addListener( listenerY);

关于JavaFx:如何使立方体适应窗口大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com