Добавление события клика в JavaFX TableCell

У меня есть TableView, и я хочу, чтобы моя программа выполняла doSomething(), когда пользователь нажимает на ячейку. После поиска в Интернете (включая stackoverflow) я нашел это.

Пробовал этот метод, но я получил ошибку компиляции в этом коде:

EventHandler click = new EventHandler() {
    public void handle(MouseEvent t) {
        System.out.println("CLICKED");
    }
};

NetBeans попросил меня переопределить все абстрактные методы, что я и сделал.

EventHandler click = new EventHandler() {
    @Override
    public void handle(MouseEvent t) {
        System.out.println("CLICKED");
    }
};

Все еще получил ту же ошибку:

error: method does not override or implement a method from a supertype

Если я удалю аннотацию @Override, я получу:

error: <anonymous pengamatan.penginderaan.FXMLDocumentController$4> is not abstract and does not override abstract method handle(Event) in EventHandler

Любая помощь? Спасибо.


person panoet    schedule 17.03.2014    source источник


Ответы (2)


Можешь попробовать:

cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
         System.out.println("cell clicked!");
    }
});

найдено здесь

person TeoMor    schedule 17.03.2014
comment
Я прочитал это и представляю, как если бы у меня было много клеток, поэтому я ищу другой способ. Как описано monkeyhash.wordpress.com/2011. /10/20/ , для этого я могу использовать класс CellFactory. Я пробовал это, но получаю ошибку. - person panoet; 17.03.2014

Решение найдено! Вот код:

....
import javafx.scene.input.MouseEvent;
....
....
EventHandler click = new EventHandler<MouseEvent>() {
@Override
    public void handle(MouseEvent t) {
        if(t.getClickCount()>1) {
        System.out.println("DOUBLE CLICK");
        }
    }
};
....

Надеюсь, поможет. Спасибо.

person panoet    schedule 18.03.2014