[英]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.