2017-06-01 6 views
2

Ich habe eine Javafx-Szene mit mehreren Tasten innerhalb. Der einzige Weg, wie die Ereignisse des Knopfes aktiviert werden, ist durch Doppelklick. In fxml verwendet die Schaltfläche die folgende Aktionsmethode onAction="#Button1Action". Wie kann ich die Funktionalität des button1Action-Ereignisses von einem Doppelklick auf einen Klick ändern?JavaFX Button Ereignis muss doppelt geklickt werden

Die Funktion onAction:

@FXML 
private void Button1Action(ActionEvent event) { 
} 

und der fxml Code:

<Button id="button1" fx:id="button1" maxHeight="1.79.." maxWidth="1.79.." mnemonicParsing="false" onAction="#Button1Action" text="Answer" GridPane.columnIndex="3" GridPane.columnSpan="3" GridPane.halignment="CENTER" GridPane.rowIndex="7" GridPane.valignment="CENTER"> 
     <GridPane.margin> 
      <Insets bottom="30.0" left="30.0" right="30.0" top="30.0" /> 
     </GridPane.margin> 
</Button> 
+0

können Sie einige Schnipsel posten? 'onAction' wird nicht durch Doppelklick, sondern durch irgendeine Aktion ausgelöst. – TomN

+0

Ich habe die Funktion gepostet, die nur mit Doppelklick aktiviert wird. Sein Teil der Gridpane der fxml. – konstantin

+0

Nicht sicher, was genau sollte ich poste, da der Code in der Button1Action keine Event-Handler enthält. – konstantin

Antwort

1

Sie nicht den Körper von Button1Action geschrieben haben, aber die meisten wahrscheinlich es ist, die aussehen wie:

@FXML 
private void Button1Action(ActionEvent event) { 
    button1.setOnAction(e -> System.out.println("Button clicked")); 
} 

Was passiert hier, dass Sie den Listener innerhalb des Listeners zuweisen, also den tatsächlichen Hörer Körper w Wird beim zweiten Klick ausgeführt.

Trivial fix ist:

@FXML 
private void Button1Action(ActionEvent event) { 
    System.out.println("Button clicked"); 
} 
+0

Mein Code ist als zweites Beispiel. Das ist die seltsame Sache. Ich habe setOnAction innerhalb des Codes nicht gesetzt. – konstantin

+1

In diesem Fall aktualisieren Sie bitte Ihre Frage mit einem Beispiel. – DVarga

Verwandte Themen