繁体   English   中英

JTable Edit Cell仅在双击时按F2和Not按任意键

[英]JTable Edit Cell only on double click and F2 and Not on any key press

我有一个带有一些可编辑列的JTable。

如果选择了一个单元格并且我开始输入,则单元格进入编辑模式。 我不想那样。 我只想在按F2或双击它时编辑单元格。

我发现了一些关于键绑定的帖子,但它没有帮助。

我是Java的新手。 请耐心,明确。

我注意到的另一件事。 如果我通过键入单元格开始编辑,它的行为与我开始通过F2或双击编辑单元格时的行为不同。 这是为什么?

您需要创建自己的TableCellEditor并覆盖方法isCellEditable

public class MyCellEditor extends AbstractCellEditor implements TableCellEditor {

    private static final long serialVersionUID = 1L;

    JTextField textField = new JTextField("");

    @Override
    public boolean isCellEditable(EventObject e) {
        if (super.isCellEditable(e)) {
            if (e instanceof MouseEvent) {
                MouseEvent me = (MouseEvent) e;
                return me.getClickCount() >= 2;
            }
            if (e instanceof KeyEvent) {
                KeyEvent ke = (KeyEvent) e;
                return ke.getKeyCode() == KeyEvent.VK_F2;
            }
        }
        return false;
    }

    @Override
    public Object getCellEditorValue() {
        return this.textField.getText();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        this.textField.setFont(table.getFont());
        this.textField.setText(value.toString());
        return this.textField;
    }
    return false;
}

isCellEditable ,我首先调用super.isCellEditable来检查为什么单元格可以编辑的所有其他原因。 只有它本身是可编辑的,我们才会检查我们的条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM