繁体   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