自从以前的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/

10-13 09:31