2015-03-30 4 views
5

Ich habe eine Zuhörerklasse, die in mein Telefon eingebunden ist, um Eingaben von einer Anwendung namens TouchOSC zu erhalten. In dieser Klasse kann ich Methoden anrufen, wenn ich eine Taste auf meinem Telefon drücke. Ich muss lediglich auf eine JavaFX-Schaltfläche klicken, um ein Ereignis in dieser Methode auszulösen, wenn mein Computer die Eingabe von meinem Telefon empfängt. Wie würde ich so etwas auslösen?Wie würde ich programmgesteuert auf eine Schaltfläche in JavaFX von einer anderen Methode klicken?

Antwort

21

button.fire()

aufgerufen, wenn eine Benutzergeste zeigt an, dass ein Ereignis für diesen Button auftreten sollte.

Wenn eine Schaltfläche ausgelöst wird, wird der Ereignishandler onAction der Schaltfläche aufgerufen.

Die Aktion der Schaltfläche, die immer aufgerufen wird, wenn die Schaltfläche ausgelöst wird. Dies kann daran liegen, dass der Benutzer mit der Maus auf die Schaltfläche klickt, oder durch ein Berührungsereignis oder durch einen Tastendruck, oder wenn der Entwickler programmatisch die Methode fire() aufruft.

Beispielcode

Erstellt eine Schaltfläche und automatisch feuert sie viermal.

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.stage.Stage; 

import java.io.IOException; 
import java.util.stream.IntStream; 

public class RapidFire extends Application { 
    private static int nClicks = 0; 

    @Override 
    public void start(Stage stage) throws IOException { 
     // setup button and action handler. 
     Button button = new Button("Click Me!"); 
     button.setOnAction(event -> { 
      nClicks++; 
      System.out.println("Clicked " + nClicks + " times."); 
     }); 
     button.setPadding(new Insets(10)); 
     button.setPrefWidth(100); 

     // show the button. 
     stage.setScene(new Scene(button)); 
     stage.show(); 

     // fire the button a few times in succession. 
     IntStream.range(0, 4).forEach(
       i -> button.fire() 
     ); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Ausgabe der Probe ist:

Clicked 1 times. 
Clicked 2 times. 
Clicked 3 times. 
Clicked 4 times. 
+1

Dies funktioniert nicht. Fire löst das Action-Ereignis, das ich in der anderen Methode festgelegt habe, nicht aus. –

+4

Funktioniert für mich. Wenn ich Ihre Frage nicht falsch verstanden habe, haben Sie wahrscheinlich ein anderes Problem in Ihrem Code, das verhindert, dass es wie erwartet funktioniert. – jewelsea

+1

@DylanLeeBlanchard: Achten Sie darauf, button.setOnAction() zu implementieren. Ich habe einen Fehler gemacht, dass ich den Event-Handler auf button.setOnMouseClicked() implementiert habe. – stviper

Verwandte Themen