Listeners in Java

220
22 марта 2018, 08:43

Я не совсем понимаю что такое слушатели в Java,а точнее как их связать с кнопкой,например

Answer 1

listeners - можно перевести как слушатель. Это объект, который "слушает" и исполняет код в зависимости от события.

interface AListener {
  public void doEvent();
}
class A {
  AListener listeners[]; 
  public void addListener(AListener listener) {
    //Запоминаем listener
  }
  public void doSomething(){
    //Делаем что-то о чем требуется оповестить всех слушателей
    for( int i = 0; i < listeners.length; i++ ) {
      listeners[i].doEvent(); //class A не знает кто его слушает
    }
  }
} 
class B implements AListener {
  public void doEvent(){
    //Что-то случилось в классе A
  }
}
//...
A a = new A();
B b = new B();
B c = new B();
a.addListener(b);
a.addListener(c);
a.doSomething(); //Оба объекта b и c выполняют doEvent
Answer 2
НА примере java FX
При нажатии на кнопку или каких-то других действиях с объектами, некое состояние в объектах изменяется, и вызывается соответсвующий метод, реализуцию которого мы передаём посредством объекта прослушивателя событий, также для этого могут использоваться анонимные классы.
public class FXclass extends Application implements EventHandler<ActionEvent>{  // интерфейс -- для обраб событий
    Button button;
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Первое FX-окно");
        StackPane layot = new StackPane();
        button = new Button("Кнопка");
        button.setOnAction(this);
        layot.getChildren().add(button);
        Scene scene = new Scene(layot, 300, 300);  // место действия
        primaryStage.setScene(scene);  // выорка места действия
        primaryStage.show();
    }
    @Override
    public void handle(ActionEvent event) {
        if(event.getSource() == button){
            System.out.println("etgsrdfs");
        }
    }
}
READ ALSO
Приведение null к 0 MongoDB

Приведение null к 0 MongoDB

В базе, в полях таблицы, может встретиться null, там где должно быть 0Как при выборе этого поля его правильно обработать? Сейчас делаю вот так

167
Автоматизация тестирования Jenkins

Автоматизация тестирования Jenkins

Написал проект залил на гит установил JenkinsВзял этот проект из git, как теперь на Jenkins запустить тесты?

187
Перехват удаляемых файлов Android

Перехват удаляемых файлов Android

Хочу создать приложение типа корзины на андроид, но не могу понять как перехватить удаляемые пользователем файлыЯ хочу перехватить файлы...

197
Достать данные из MySQL в TableView

Достать данные из MySQL в TableView

Вот метод, которые должен доставать и добавлять в таблицуВ консоле пишет что добавил, но в TableView ничего не показывает

212