代码之家  ›  专栏  ›  技术社区  ›  A.Sheh

javafx将当前节点复制到另一个节点的功能

  •  1
  • A.Sheh  · 技术社区  · 7 年前

    Button btn = new Button("Original Button");
    
        VBox root = new VBox();
        root.getChildren().add(btn);
    
        btn.setOnMouseClicked(e->{
            root.getChildren().add(new Button("New button"));
        });
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   SedJ601    7 年前

    来自@fabian建议的代码:

    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.StackPane;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    /**
     *
     * @author Sedrick
     */
    public class JavaFXApplication11 extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            VBox vbox = new VBox();
    
            Button btn = new Button();
            btn.setText("Say 'Hello World'");
            btn.setOnAction(new EventHandler<ActionEvent>() {
    
                @Override
                public void handle(ActionEvent event) {
                    Button oldButton = (Button)event.getSource();                
                    Button newButton = new Button("new Button");
                    vbox.getChildren().add(newButton);
                    newButton.setOnAction(oldButton.getOnAction());               
                }
            });
    
    
            vbox.getChildren().add(btn);
    
            StackPane root = new StackPane();
            root.getChildren().add(vbox);
    
            Scene scene = new Scene(root, 300, 250);
    
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
    
    }