簡體   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