停止JTable仅在焦点和按键时才可编辑

时间:2016-12-07 12:23:23

标签: java swing jtable

我写了一个自定义DefaultCellEditor,因此当我输入示例length的{​​{1}}列时,除了数字之外,我无法输入任何内容。

为此,我在JTable添加了KeyListener作为编辑器组件。虽然如果双击单元格来编辑值,这种方法很有效,但如果单击单元格一次然后开始输入,则无效。

如果用户单击一次单元格然后开始输入,同时仍然允许用户双击单元格以开始编辑单元格,如何阻止用户编辑单元格?

JTextField

2 个答案:

答案 0 :(得分:2)

看看CellEditor.isCellEditable( EventObject anEvent )AbstractCellEditorDefaultCellEditor实施CellEditor界面。

如果EventObjectKeyEvent类型的实例,则可以覆盖此方法以返回false。否则返回super.isCellEditable( anEvent )

答案 1 :(得分:1)

参考TT.'s answer并使用与原始问题类似的DefaultCellEditor,就像在DefaultCellEditor中添加此方法一样简单。

public boolean isCellEditable(EventObject anEvent) {
    if (anEvent instanceof MouseEvent) {
        return ((MouseEvent)anEvent).getClickCount() >= clickCountToStart;
    }
    return false;
}