Один клик для редактирования ячейки JTable - PullRequest
15 голосов
/ 12 сентября 2011

В настоящее время ячейка JTable выделяется при первом щелчке, а при втором редактируется.

Можно ли редактировать ее сразу же при первом щелчке?

Ответы [ 3 ]

22 голосов
/ 12 сентября 2011

В API DefaultCellEditor есть метод с именем 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);
    } 
6 голосов
/ 24 мая 2013

Опубликованный ответ, касающийся расширения 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);
}
4 голосов
/ 12 сентября 2011

Используйте setClickCountToStart(1) в редакторе ячеек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...