Ich möchte eine neue Schaltfläche erstellen, indem Sie auf die ursprüngliche Schaltfläche klicken, wie im folgenden Code angezeigt wird. Jetzt hoffe ich, dass die neue Taste dieselbe Funktion wie die aktuelle Taste hat. Wenn ich auf die neue Schaltfläche klicke, wird auch eine neue Schaltfläche erstellt. Wenn Original-Taste mehr Funktionen haben, und neue Taste kann auch diese Funktionen haben.javafx kopiere Funktion des aktuellen Knotens auf einen anderen Knoten
Button btn = new Button("Original Button");
VBox root = new VBox();
root.getChildren().add(btn);
btn.setOnMouseClicked(e->{
root.getChildren().add(new Button("New button"));
});
Es gibt keine Möglichkeit, dies zu tun um durch jeden einzelnen Event-Handler zu kopieren, zum Beispiel 'Button oldButton = (Button) e.getSource(); Schaltfläche newButton = new Schaltfläche (...); newButton.setOnMouseClicked (oldButton.getOnMouseClicked()); '. Event-Handler, die mit 'addEventHandler' hinzugefügt wurden, können jedoch nicht aufgelistet werden (zumindest nicht ohne Zugriff auf private Member über Reflektion). Übrigens: Beachten Sie, dass das 'onAction'-Ereignis normalerweise für Schaltflächen anstelle von 'onMouseClicked' verwendet wird, da das vorherige Ereignis auch beim Drücken der Eingabetaste ausgelöst wird, wenn die Schaltfläche aktiviert ist. – fabian