gpt4 book ai didi

JavaFX 2.0 SplitPane 不再按预期工作

转载 作者:行者123 更新时间:2023-12-02 00:39:18 27 4
gpt4 key购买 nike

自从从以前的 JavaFX 2.0 版本更新到 JavaFX 2.0 b36(Windows SDK(32 位)+ Netbeans 插件)后,SplitPane 控件不再按预期工作。

  1. 分隔线无法移动
  2. 分隔线位置与预期不符
  3. 所包含边的尺寸与预期不符

这是我的 SplitPane 示例代码。

public class FxTest extends Application {

public static void main(String[] args) {
Application.launch(FxTest.class, args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("SplitPane Test");

Group root = new Group();
Scene scene = new Scene(root, 200, 200, Color.WHITE);

Button button1 = new Button("Button 1");
Button button2 = new Button("Button 2");

SplitPane splitPane = new SplitPane();
splitPane.setPrefSize(200, 200);
splitPane.setOrientation(Orientation.HORIZONTAL);
splitPane.setDividerPosition(0, 0.7);
splitPane.getItems().addAll(button1, button2);

root.getChildren().add(splitPane);

primaryStage.setScene(scene);
primaryStage.setVisible(true);
}
}

正如您所看到的(希望)左侧明显小于右侧。

另一个有趣的事实是,当您将方向更改为“垂直”时

splitPane.setOrientation(Orientation.VERTICAL);

并尝试向上或向下移动分隔线,您会得到一些控制台输出,显示“此处”。看起来像一些测试输出。

这有什么问题吗?

最佳答案

要使 SplitPane 按预期工作,请在每一侧添加一个布局(例如 BorderPane)。添加要显示到每个布局的控件。我认为 API 文档中应该更清楚地说明这一点!

public class FxTest extends Application {

public static void main(String[] args) {
Application.launch(FxTest.class, args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("SplitPane Test");

Group root = new Group();
Scene scene = new Scene(root, 200, 200, Color.WHITE);

//CREATE THE SPLITPANE
SplitPane splitPane = new SplitPane();
splitPane.setPrefSize(200, 200);
splitPane.setOrientation(Orientation.HORIZONTAL);
splitPane.setDividerPosition(0, 0.7);

//ADD LAYOUTS AND ASSIGN CONTAINED CONTROLS
Button button1 = new Button("Button 1");
Button button2 = new Button("Button 2");

BorderPane leftPane = new BorderPane();
leftPane.getChildren().add(button1);

BorderPane rightPane = new BorderPane();
rightPane.getChildren().add(button2);

splitPane.getItems().addAll(leftPane, rightPane);

//ADD SPLITPANE TO ROOT
root.getChildren().add(splitPane);

primaryStage.setScene(scene);
primaryStage.setVisible(true);
}
}

关于JavaFX 2.0 SplitPane 不再按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6834256/

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