5
我有一個監聽器類,連接到我的手機接收來自名爲TouchOSC的應用程序的輸入。在該課程中,只要按下手機上的按鈕,我就可以調用方法。我需要做的是點擊一個JavaFX按鈕,在我的電腦收到來自手機的輸入信息時觸發該方法中的事件。我會如何觸發這樣的事情?如何以編程方式從另一種方法中單擊JavaFX中的按鈕?
我有一個監聽器類,連接到我的手機接收來自名爲TouchOSC的應用程序的輸入。在該課程中,只要按下手機上的按鈕,我就可以調用方法。我需要做的是點擊一個JavaFX按鈕,在我的電腦收到來自手機的輸入信息時觸發該方法中的事件。我會如何觸發這樣的事情?如何以編程方式從另一種方法中單擊JavaFX中的按鈕?
當用戶手勢表示不應該出現該ButtonBase一個事件時,調用。
當一個按鈕被觸發時,調用該按鈕的onAction
事件處理程序。
按鈕的動作,每當按鈕被觸發時調用該按鈕的動作。這可能是由於用戶用鼠標點擊按鈕,觸摸事件或按鍵,或者開發人員以編程方式調用fire()方法。
示例代碼
創建一個按鈕,並自動閃光四次。樣品的
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);
}
}
輸出是:
Clicked 1 times.
Clicked 2 times.
Clicked 3 times.
Clicked 4 times.
這是行不通的。火不會觸發我在其他方法中設置的Action事件。 – 2015-03-30 19:40:39
適合我。除非我誤解了你的問題,否則你的代碼中可能還有其他一些問題妨礙它按照你的預期工作。 – jewelsea 2015-03-30 20:13:22
@DylanLeeBlanchard:小心實現button.setOnAction()。我犯了錯誤,我已經在button.setOnMouseClicked()上實現了事件處理程序。 – stviper 2016-01-17 14:19:36