自从以前的JavaFX 2.0版本更新到JavaFX 2.0 b36(Windows(32位)SDK + Netbeans插件)以来,SplitPane控件不再能按预期工作。
分频器不能移动
分压器位置不符合预期
容纳侧的尺寸不符合预期
这是我的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);
尝试上下移动分隔线,您会看到一些控制台输出,显示“ HERE”。
看起来像一些测试输出。
这是什么问题?
最佳答案
要使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);
}
}
关于java - JavaFX 2.0 SplitPane不再按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6834256/