Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Проблема с выделением строк таблицы


Автор: DsKTY 26.5.2008, 21:31
В общем, делаю выделение строки в таблице. Вот код:

Код

        final JTable table = new JTable(ptm);
        table.setSelectionBackground(Color.LIGHT_GRAY);
        table.setRowSelectionAllowed(true);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
            @Override
            public void valueChanged(ListSelectionEvent e) {
                Integer i = e.getFirstIndex();
                System.out.println(i);
                if(e.getValueIsAdjusting()){
                 return;
                }
                System.out.println(i + "  !!!");    
                table.addRowSelectionInterval(i, i);         
            }
        });


После клика на таблице (в данном случае по 3-й строке) на консоль выводится вот это:

Код

2
2
-1
-1
-1
-1  !!!
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Row index out of range
    at javax.swing.JTable.boundRow(Unknown Source)
    at javax.swing.JTable.addRowSelectionInterval(Unknown Source)
    at PersonsTable$1.valueChanged(PersonsTable.java:54)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(Unknown Source)
    at javax.swing.JTable.clearSelectionAndLeadAnchor(Unknown Source)
    at javax.swing.JTable.tableChanged(Unknown Source)
    at javax.swing.table.AbstractTableModel.fireTableChanged(Unknown Source)
    at javax.swing.table.AbstractTableModel.fireTableDataChanged(Unknown Source)
    at PersonsTableModel.getValueAt(PersonsTableModel.java:27)
    at javax.swing.JTable.getValueAt(Unknown Source)
    at javax.swing.JTable.prepareRenderer(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
    at javax.swing.plaf.ComponentUI.update(Unknown Source)
    at javax.swing.JComponent.paintComponent(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)


Т.е. сначала всё определяется правильно, но потом почему-то значение строки становится -1, и когда флаг по e.getValueIsAdjusting() указывает, что процесс выбоа ячейки закончен, то в table.addRowSelectionInterval(i, i); передаётся -1 и соответсвенно выбрасывается ошибка. 

Может кто сталкивался с подобным или имеет?? Или может я что-то не так далаю??

Спасибо.

Автор: DsKTY 27.5.2008, 00:58
ээх... ложная тревога. 
Как обычно пол дня бился, и уже совсем отчаявшись запостил на форум. И как обычно, через пару часов проблема решается.... smile

Автор: skif18 27.5.2008, 15:49
DsKTY, так всегда бывает. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)