使用CheckBox更改订单

时间:2017-05-24 10:12:57

标签: javafx

我正在开发一个应用程序,在该应用程序中,如果用户选择CheckBox,则矩形顺序会发生变化,例如Blue Rectangle首先出现,红色变为第二个。

这是示例代码。我试过“setOnAcation”它没有工作显然我复制了孩子!我必须添加监听器到框?请..

谢谢

public class Main extends Application{ 
        @Override
        public void start(Stage primaryStage) {
            // Displaying all the functions in Scene
            StackPane border = new StackPane();
            Scene scene = new Scene(border, 750, 500);
            primaryStage.setTitle("BorderPane");
            primaryStage.setScene(scene);
            primaryStage.show();

            HBox h1 = new HBox(20);
            h1.setPadding(new Insets(20));
            CheckBox box = new CheckBox("Switch Places");
            Rectangle rect1 = new Rectangle(200,200);
            rect1.setFill(null);
            rect1.setStroke(Color.RED);

            Rectangle rect2 = new Rectangle(200,200);
            rect2.setFill(null);
            rect2.setStroke(Color.BLUE);

            h1.getChildren().addAll(rect1,rect2,box);

            box.setOnAction((e)->{
                if (box.isSelected()){
                    h1.getChildren().addAll(rect2,rect1,box);
                }
                else{
                    System.out.println("Checkbox1 is not selected");
                }

            });

            border.getChildren().add(h1);

        }

        /**
         * @param args
         *            the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
    } 

1 个答案:

答案 0 :(得分:1)

在添加新子项后,首先使用clear()方法删除h1中的重复子项:

box.setOnAction((e) -> {
        if (box.isSelected()) {
            h1.getChildren().clear();
            h1.getChildren().addAll(rect2, rect1, box);
        } 
 });