自从以前的JavaFX 2.0版本更新到JavaFX 2.0 b36(SDK for Windows(32位)+ 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);
}
}
你可以(希望)看到左侧明显小于右侧。
另一个有趣的事实是,当你将方向改为VERTICAL时
splitPane.setOrientation(Orientation.VERTICAL);
并试图向上或向下移动分隔线,你得到一些控制台输出说“这里”。 看起来像是一些测试输出。
这有什么问题?
答案 0 :(得分:3)
要使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);
}
}