Aka*_*ash 15 java swing jtable
目前,JTable单元格在第一次单击时被选中,而在第二个单元格上则被编辑.
是否可以在第一次点击时直接编辑它?
Nei*_*fen 22
在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);
}
Run Code Online (Sandbox Code Playgroud)
关于扩展DefaultCellEditor的发布答案确实有效,并且我已使用它,除了将应用程序的Look&Feel更改为Nimbus之外,较粗的默认JTextField边框会侵入表格单元格,从而使文本难以读取。
原因是默认表单元格编辑器是JTable $ GenericEditor而不是DefaultCellEditor(它是直接子类),并且前者在以下代码中具有以下关键要求getTableCellEditorComponent()
:
((JComponent)getComponent()).setBorder(new LineBorder(Color.black));
Run Code Online (Sandbox Code Playgroud)
JTable $ GenericEditor是包私有的,因此不能被子类化,但是JTable提供了一种getDefaultEditor()
方法,所以我要做的就是:
((DefaultCellEditor) myJTable.getDefaultEditor(Object.class)).setClickCountToStart(1);
Run Code Online (Sandbox Code Playgroud)
或者,如果您想满足表中所有可能的columnClasses的要求(例如,如果您的一列是一个数字):
for (int i = 0; i < myJTable.getColumnModel().getColumnCount(); i++) {
final DefaultCellEditor defaultEditor = (DefaultCellEditor) myJTable.getDefaultEditor(myJTable.getColumnClass(i));
defaultEditor.setClickCountToStart(1);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13988 次 |
最近记录: |