【问题标题】:Adding click event to JavaFX TableCell将点击事件添加到 JavaFX TableCell
【发布时间】:2014-04-22 13:55:17
【问题描述】:

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

尝试了该方法,但我在这些代码上遇到了编译错误:

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

有什么帮助吗?谢谢。

【问题讨论】:

    标签: java javafx mouseevent tablecell tablecolumn


    【解决方案1】:

    你可以试试:

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

    找到here

    【讨论】:

    • 我已经读过了,我想如果我有很多细胞会怎么样,所以我正在寻找另一种方法。如monkeyhash.wordpress.com/2011/10/20/… 所述,我可以使用 CellFactory 类来做到这一点。我试过了,但出错了。
    【解决方案2】:

    找到了解决方案!这是代码:

    ....
    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");
            }
        }
    };
    ....
    

    希望对您有所帮助。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 2015-07-22
      • 2013-04-10
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多