簡體   English   中英

單擊以編輯JTable單元格

[英]Single click to edit a JTable Cell

目前,JTable單元格在第一次單擊時被選中,而在第二個單元格上則被編輯。

是否可以在第一次點擊時直接編輯它?

在DefaultCellEditor api中有一個名為setClickCountToStart的方法

    DefaultCellEditor singleclick = new DefaultCellEditor(new JTextField());
    singleclick.setClickCountToStart(1);

    //set the editor as default on every column
    for (int i = 0; i < table.getColumnCount(); i++) {
        table.setDefaultEditor(table.getColumnClass(i), singleclick);
    } 

關於擴展DefaultCellEditor的已發布答案確實有效,我已經使用過它,除了在將應用程序的外觀更改為Nimbus時,較粗的默認JTextField邊界侵入表格單元格,使文本無法讀取。

原因是默認表格單元格編輯器是JTable $ GenericEditor而不是DefaultCellEditor(它是直接子類),前者在getTableCellEditorComponent()有以下關鍵行:

((JComponent)getComponent()).setBorder(new LineBorder(Color.black));

JTable $ GenericEditor是包私有所以不能被子類化,但是JTable提供了一個getDefaultEditor()方法,所以我所做的就是:

((DefaultCellEditor) myJTable.getDefaultEditor(Object.class)).setClickCountToStart(1);

或者如果你想滿足表中所有可能的columnClasses(例如,如果你的一列是一個數字):

for (int i = 0; i < myJTable.getColumnModel().getColumnCount(); i++) {
    final DefaultCellEditor defaultEditor = (DefaultCellEditor) myJTable.getDefaultEditor(myJTable.getColumnClass(i));
    defaultEditor.setClickCountToStart(1);
}

在單元格編輯器上使用setClickCountToStart(1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM