检测 JTable 单元格是否已被双击并因此切换到编辑模式所需的侦听器是什么?

What is the listener needed to detect if a JTable cell has been double clicked, and therefore switched to editing mode?

当您在 Swing 中双击一个可编辑的 JTable 单元格时,该单元格会变成一种 'editing mode,' 插入符号出现在其中,并且单元格周围出现一个轮廓。我的问题是,我需要使用什么侦听器来检测这种进入编辑模式的变化?

明确地说,我不是在寻找检测单元格值何时更改的侦听器,也不是在寻找双击侦听器,而是在可编辑时初始切换到编辑模式双击单元格。

所以,再一次,这个变化的监听器叫什么?是否存在,或者我是否需要修改其他监听器?

谢谢,

您需要将鼠标侦听器添加到 table 对象。在 mousePressed() 方法中检查点击次数是 2.This 应该可以解决您的问题

yourTable.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
        JTable table =(JTable) e.getSource();
        Point p = e.getPoint();
        int row = table.rowAtPoint(p);
        if (e.getClickCount() == 2) {

        }
    }
});

您可以使用 MouseClick 事件并查看发生了多少次点击。

示例代码

jtable.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent me) {
        JTable table =(JTable) me.getSource();
        if (me.getClickCount() == 2) {

         int row = target.getSelectedRow();
         int column = target.getSelectedColumn(); 

         // add your logic here based on which row and column
        }
    }
});

这可能会有帮助。更多详情 click here

最好的方法是监听 属性 "tableCellEditor"。所以你可以很容易地得到activated/deactivated.

的编辑器
table.addPropertyChangeListener("tableCellEditor", new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        if (evt.getNewValue() == null) {
            // editing stopped
        } else {
            // editing started
        }
    }
};