JTable - запретить пользователю отменять выбор всех элементов в таблице - PullRequest
0 голосов
/ 18 октября 2018

У меня есть таблица с фиксированным содержимым, которая, я знаю, никогда не будет пустой.

Я хотел бы использовать ее в качестве переключателя (условно говоря): я хочу всегда выбирать одну и только одну строку ввремя.

Я уже знаю, что могу установить модель выбора на SINGLE_SELECTION, но (довольно неожиданно) это, кажется, не мешает пользователю отменить выбор всех строк в таблице.

Есть липростой способ запретить пользователю отменять выбор всех строк в таблице?

Я могу думать только о чем-то вроде:

@Override
public void valueChanged(ListSelectionEvent listSelectionEvent) {
    if (!listSelectionEvent.getValueIsAdjusting() && table.getSelectedRow() == -1) {
        table.selectRow(0);
    }
}

, но, честно говоря, это кажется слишком неуклюжим для такогопростая задача (и мне нужно запомнить старый выбор, чтобы лучше реализовать шаблон) ...

Есть ли более простой / более элегантный способ?

Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Переопределите метод 'changeSelection', чтобы НЕ отменять выделение, если это последний выбранный ряд, например:

public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
            {
                if(!(toggle && jt.getSelectedRowCount() == 1))
                {
                    super.changeSelection(rowIndex, columnIndex, toggle, extend);
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...