Опубликованный ответ, касающийся расширения 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);
или если вы хотите обработать все возможные столбцы класса в вашей таблице (в случае, если один из ваших столбцов был, например, числом):
for (int i = 0; i < myJTable.getColumnModel().getColumnCount(); i++) {
final DefaultCellEditor defaultEditor = (DefaultCellEditor) myJTable.getDefaultEditor(myJTable.getColumnClass(i));
defaultEditor.setClickCountToStart(1);
}