JavaFX - VBox中是否可以有滚动条?

时间:2015-06-22 02:34:29

标签: layout javafx

我正在做一个涉及一系列复选框的项目。但是当我在VBox中添加所有复选框时遇到问题。这是我在下面的截图

http://i.stack.imgur.com/l0fw3.png

无法查看其他复选框。

这是我的复选框代码

public void initializeSenatorLists() {

    CheckBox []chckSenators = new CheckBox[senators.length];



    for(int s=0; s < senators.length; s++) {

        chckSenators[s] = new CheckBox(senators[s]);
        chckSenators[s].setStyle("-fx-font-size:15px;");
        chckSenators[s].setTextFill(Color.WHITE);
        senVbox.getChildren().add(chckSenators[s]);

    }

    for(CheckBox cbSen:chckSenators) {

       cbSen.setOnMouseClicked(new EventHandler<MouseEvent>() {

           @Override
           public void handle(MouseEvent event) {
               if(cbSen.isSelected()) {
                   senatorLimitVote++;


                      votedSenators.add(cbSen.getText());


               }else {
                   votedSenators.remove(cbSen.getText());
                   senatorLimitVote--;
             }
           }
       });


    }
}

我想对我的复选框做什么就是这个 http://i.stack.imgur.com/ODcDb.png

我希望你能帮助我。

3 个答案:

答案 0 :(得分:4)

尝试将VBox放在scrollPane中。使用这种方法,您不必担心设置prefHeight和prefWidth属性。您可以使用&#39; USE_COMPUTED_SIZE&#39;对于VBox。

实施例: 在ScrollPane中添加VBox,动态添加各种​​元素,如HBox,Labels和矩形。

答案 1 :(得分:3)

您可以使用ScrollPane

示例:

ScrollPane scroll = new ScrollPane();
scroll.setContent(checkboxContainer); 

答案 2 :(得分:0)

你可以添加一个带VBox的滚动条

 Group root = new Group();
 ScrollBar sc = new ScrollBar();
 sc.setMin(0);
 sc.setOrientation(Orientation.VERTICAL);
 //set other properties
 VBox vb = new VBox();
 //add childrens to Vbox and properties
 root.getChildren().addAll(vb, sc);
 sc.valueProperty().addListener(new ChangeListener<Number>() {
            public void changed(ObservableValue<? extends Number> ov,
                Number old_val, Number new_val) {
                    vb.setLayoutY(-new_val.doubleValue());
            }
        });

您还可以参考here

如果要更改复选框的布局,请尝试使用不同的布局窗格(GridPane,TilePane等),而不是VBox。