我正在开发一个应用程序,在该应用程序中,如果用户选择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);
}
}
答案 0 :(得分:1)
在添加新子项后,首先使用clear()方法删除h1中的重复子项:
box.setOnAction((e) -> {
if (box.isSelected()) {
h1.getChildren().clear();
h1.getChildren().addAll(rect2, rect1, box);
}
});