2015-03-30 4 views
5

У меня есть класс слушателя, который подключен к сети в мой телефон для получения ввода от приложения TouchOSC. В этом классе я могу вызывать методы всякий раз, когда я нажимаю кнопку на своем телефоне. Что мне нужно сделать, так это нажать кнопку JavaFX, чтобы инициировать событие в этом методе всякий раз, когда мой компьютер получает вход с моего телефона. Как я могу вызвать что-то подобное?Как бы программно нажать кнопку в JavaFX по другому методу?

ответ

21

button.fire()

Вызывается, когда пользователь жестом указывает на то, что событие для этого 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. 
+1

Это не работает. Fire не будет запускать событие Action, которое я установил другим способом. –

+4

Работает для меня. Если я не понял ваш вопрос, у вас, вероятно, есть еще одна проблема в вашем коде, которая мешает ему работать, как вы ожидаете. – jewelsea

+1

@DylanLeeBlanchard: будьте осторожны, чтобы реализовать button.setOnAction(). Я ошибся, что реализовал обработчик событий на button.setOnMouseClicked(). – stviper

Смежные вопросы