Jtable, выполните следующие действия.clearSelection () vs Jtable.getSelectionModel.не() - когда использовать?
мне нужно отменить все выборки в объекте модели JTable. Java предоставляет эту функцию " clearSelection ()", которая делает то, что мне нужно, насколько я понимаю.
но я смущен, почему эта функция может быть вызвана для объекта JTable, а также для модели выбора для объекта JTable:
1) mytable.clearSelection();
2) mytable.getSelectionModel().clearSelection();
оба способа работают, но я не понимаю, в какой ситуации clearSelection() модели SelectionModel (например, в 2) ) имел бы какой-либо смысл. Насколько я понял SelectionModels, они используются, чтобы решить, какой выбор позволяет JTable. Я использую SelectionModel, чтобы разрешить выбор только одной строки
//allow only one row to be selected
mytable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
какой способ предпочтительнее в какой ситуации? Есть ли веская причина не использовать способ 1?
Я был бы рад, если у кого-то есть какое-то дружелюбное объяснение для начинающих. Заранее спасибо.
2 ответов
вот реализация JTable#clearSelection()
public void clearSelection() {
selectionModel.clearSelection();
columnModel.getSelectionModel().clearSelection();
}
как вы можете видеть, есть два ListSelectionModel
, которые очищаются, потому что вы можете выбрать столбец и/или строку и/или мобильный.
из руководства Oracle:
JTable использует очень простую концепцию выбора, управляемую как пересечение строк и столбцов. Он не был конструирован для того чтобы отрегулировать полно независимые выборки ячеек.
A ListSelectionModel
обрабатывать все аспекты выбора такие как выбрать строку, как мы можем выбрать некоторые строки и т. д... Не только вид отбора !
Дополнительная информация в учебник Oracle JTable
обычно, когда вы видите два таких метода, это потому, что таблица вызовет SelectionModel.не() метод для вас. Таким образом, таблица представляет собой удобный метод.
в этом случае фактический код:
public void clearSelection()
{
selectionModel.clearSelection();
columnModel.getSelectionModel().clearSelection();
}
таким образом, модели выбора строк и столбцов очищаются.