Вопрос

У меня есть сортируемая модель таблицы по умолчанию с 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Чтобы получить правильные данные модели для представления.

Для более сложных потребностей сортировки/фильтрации вы можете попробовать Застекленные списки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top