向JavaFX TableCell添加单击事件

向JavaFX TableCell添加单击事件,java,javafx,mouseevent,tablecell,tablecolumn,Java,Javafx,Mouseevent,Tablecell,Tablecolumn,我有TableView,我希望我的程序在用户单击单元格时执行doSomething()。在网上搜索(包括stackoverflow)后,我找到了 尝试了该方法,但我在以下代码中遇到编译错误: EventHandler click = new EventHandler() { public void handle(MouseEvent t) { System.out.println("CLICKED"); } }; NetBeans要求我重写所有abscract方

我有TableView,我希望我的程序在用户单击单元格时执行doSomething()。在网上搜索(包括stackoverflow)后,我找到了

尝试了该方法,但我在以下代码中遇到编译错误:

EventHandler click = new EventHandler() {
    public void handle(MouseEvent t) {
        System.out.println("CLICKED");
    }
};
NetBeans要求我重写所有abscract方法,所以我照做了

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
错误:不是抽象的,并且不重写EventHandler中的抽象方法句柄(事件)
有什么帮助吗?谢谢。

您可以尝试:

cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
         System.out.println("cell clicked!");
    }
});
cell.addEventFilter(MouseEvent.MOUSE_单击,新建EventHandler()){
@凌驾
公共无效句柄(MouseeEvent事件){
System.out.println(“单元格点击!”);
}
});

找到了

找到了解决方案!代码如下:

....
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");
        }
    }
};
....
。。。。
导入javafx.scene.input.MouseEvent;
....
....
EventHandler单击=新建EventHandler(){
@凌驾
公共无效句柄(MouseEvent t){
如果(t.getClickCount()>1){
System.out.println(“双击”);
}
}
};
....

希望能有帮助。谢谢。

我读过这篇文章,我想象如果我有很多细胞,我会怎样,所以我正在寻找另一种方法。如上所述,我可以使用CellFactory类来实现这一点。我试过了,但是出错了。