以下程序在嵌入窗格(或锚窗格的边框窗格)时无法水平调整折线图的大小如果折线图直接作为 VBox 的父级,那么一切都按预期工作。
我发现我需要将图表大小绑定到父窗格,我认为这必须由 VBox 和 HBox 自动完成。
在尝试了 HBox/VBox 中不同的封闭组合、设置增长和对齐策略之后,我对布局的工作方式感到非常困惑。我观察到 ui 组件在调整大小时的行为方式存在差异。
任何澄清(或对 javadoc 不清楚的文档的摘要见解)表示赞赏。
此致。
来源编辑和澄清
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.chart.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage stage) {
NumberAxis xAxis = new NumberAxis();
NumberAxis yAxis = new NumberAxis();
xAxis.setLabel("X");
yAxis.setLabel("Y");
final LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
lineChart.setTitle("x = f(y)");
XYChart.Series data = new XYChart.Series();
data.setName("Serie 1");
for (int i = 0; i < 10; i++) {
data.getData().add(new XYChart.Data(i, i * i));
}
lineChart.getData().add(data);
VBox vb = new VBox();
vb.setFillWidth(true);
HBox hb = new HBox();
hb.getChildren().add(lineChart);
hb.setFillHeight(true);
vb.getChildren().add(hb);
HBox.setHgrow(lineChart, Priority.ALWAYS);
VBox.setVgrow(hb, Priority.ALWAYS);
Scene scene = new Scene(vb);
stage.setScene(scene);
stage.centerOnScreen();
stage.setResizable(true);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}