2016-07-14 2 views
-1

Я использую javafx для создания графического интерфейса для моей программы и создал пользовательскую кнопку ComponentButton. Это расширяет javafx.scene.control.Button, единственная реальная разница в том, что кнопка имеет дополнительную переменную-член. Я хотел бы, чтобы у всех экземпляров моей кнопки был прикреплен к ним прослушиватель действий, слушатель использовал бы переменную-член. В результате я хотел бы иметь возможность определить прослушиватель действий в определении класса кнопки. На данный момент я не смог выполнить эту работу, я могу сделать прослушиватель действий для каждого экземпляра кнопки, но, поскольку их будет много, я бы предпочел избежать этого.Определить прослушиватель действий в пользовательском классе кнопок

Любые идеи или альтернативные подходы очень ценятся, заблаговременно.

Edit: Ответил он

Я решил сделать вид (где использовалась кнопка) реализации EventHandler<ActionEvent>. Это означало, что я мог бы добавить метод

@Override 
public void handle(final ActionEvent event) 
{ 
    //Do stuff 
} 

Это тогда означало, что я мог бы назвать button.setOnAction(this); выполнить действие

+1

«Я могу сделать слушатель действий для каждого экземпляра кнопки, но, как будет многие из них я бы предпочел избежать этого ». Почему вы хотите избежать этого? И «До сих пор я не смог выполнить эту работу» не является заявлением о проблеме. Что на самом деле происходит не так? –

+0

Несомненно, 'this.setOnAction (this);', а не 'button.setOnAction (this);'? –

+0

Я использовал его в классе UI, с петлей, создающей кнопки по мере необходимости. –

ответ

0

Я решил сделать вид (где использовалась кнопка) реализации EventHandler<ActionEvent>. Это означало, что я мог бы добавить метод

@Override 
public void handle(final ActionEvent event) 
{ 
    //Do stuff 
} 

Это то это означало, что я мог бы назвать button.setOnAction(this); выполнить действие

+1

Рассмотрим вместо этого 'button.setOnAction (this :: handle);' и * not *, реализующий интерфейс EventHandler '(также удалите' @ Override'). Причина, по которой это предпочтительнее, заключается в том, что если вам нужно было сделать то же самое для других слушателей, то теперь вы можете: с помощью своего оригинального решения вы не сможете реализовать как «EventHandler », так и (например) 'EventHandler '. Вы также можете переименовать этот метод на все, что вам нравится, с помощью этого подхода. –

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