Сортировка стола разбивает табличку?
Вопрос
У меня есть сортируемая модель таблицы по умолчанию с ListSelectionListener, которая прослушивает DoubleClick, а затем открывает представление подробности конкретного столбца. Однако это работает нормально, когда я сортирую столбец, слушатель больше не функционирует.
JTable foosTable = new JTable(model);
TableRowSorter<TableModel> fooSorter = new TableRowSorter<TableModel>(model);
foosTable.setRowSorter(fooSorter);
ListSelectionModel listMod = foosTable.getSelectionModel();
listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionListener barListener = new ListSelectionListener(foosTable);
listMod.addListSelectionListener(barListener);
Решение
Я никогда не использовал TablerOwlistener, который, кажется, только itemChanged
мероприятие. Я обычно придерживаюсь стандартного качания. Добавьте мышиный слушатель в таблицу, возьмите расположение события Click, а затем обработайте его.
jTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
Point p = new Point(evt.getX(), evt.getY());
int col = jTable.columnAtPoint(p);
int row = jTable.rowAtPoint(p);
if (evt.getButton() == MouseEvent.BUTTON1)
{
if (evt.getClickCount() >= 2)
{
...
...
}
});
РедактироватьНастройка а Таблеровер:
TableRowSorter<YourJTableModel> sorter =
new TableRowSorter<YourJTableModel>(yourJTableModel);
jTable.setRowSorter(sorter);
Поскольку вы меняете заказ строки, вам нужно будет использовать ConvertColumnIndextomodelЧтобы получить правильные данные модели для представления.
Для более сложных потребностей сортировки/фильтрации вы можете попробовать Застекленные списки.