2013-06-22 3 views
-1

У меня есть jtable (менеджер компоновки Gui) с boolean значением в одном столбце. Вы увидите, что в этом столбце появится флажок. Все в порядке со мной, но теперь я хотел бы иметь прослушиватель событий ячейки столбца, поэтому я получаю вывод всех данных строки, когда я нажимаю этот флажок.Java jTable прослушиватель столбцов

Теперь у меня есть некоторый успех с jtable.getModel().addTableModelListener, но это оказывает влияние на всю таблицу.

jTabelRooster.getModel().addTableModelListener(
new TableModelListener() { 
    public void tableChanged(TableModelEvent evt) { 

     String lidnummer = jTabelRooster.getValueAt(evt.getLastRow(), 0).toString(); 
     int parseLidnummer = Integer.parseInt(lidnummer); 
     String lidVoornaam = jTabelRooster.getValueAt(evt.getLastRow(), 1).toString(); 
     String lidAchternaam = jTabelRooster.getValueAt(evt.getLastRow(), 3).toString(); 
     Boolean aanwezig = Boolean.parseBoolean(jTabelRooster.getValueAt(evt.getLastRow(), 4).toString()); 

    } 
}); 

Может ли кто-нибудь меня в этом вопросе?

+0

Ответьте на ответы на этот вопрос. Это наименьшее, что вы могли бы сделать для них: признать свои усилия, предоставленные бесплатно для вашей выгоды. –

ответ

1

Теперь у меня есть некоторый успех с jtable.getModel(). AddTableModelListener, но это влияет на всю таблицу.

Прослушивание событий, порожденных изменением столбца, содержащего Boolean:

public void tableChanged(TableModelEvent e) 
{ 
    if (e.getType() == TableModelEvent.UPDATE) 
    { 
     int column = e.getColumn(); 

     if (column == ???) 
     { 
      ... 
     } 
    } 
} 
3

Почему вы не просто переопределить setValueAt функцию вашего TableModel? Он получает две координаты в таблице модели и значение, введенное пользователем

class YourTableModel extends YourBaseTableModel 
{ 
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) 
    { 
     //To keep the default behavior, if you didn't write this method yourself 
     super.setValueAt(aValue, rowIndex, columnIndex); 
     if(columnIndex == theBooleanColumnIndex) 
     { 
      //now with rowIndex you can access the underlaying row 
     } 
    } 
}