2010-06-14 43 views
3

JAVA其同步 NETBEANSJTable中的和的DefaultTableModel的排索引失去後我排序的JTable

// resultsTable, myModel 
JTable resultsTable; 
DefaultTableModel myModel; //javax.swing.table.DefaultTableModel 
myModel = (DefaultTableModel) resultsTable.getModel(); 

// event of clicking on item of table 
String value = (String) myModel.getValueAt(resultsTable.getSelectedRow(), columnIndex) 

我使用JTable中和的DefaultTableModel,查看各種信息 的表,我想要得到的某列的值表格的選定索引。

我上面寫的代碼工作正常,除非: 我使用的排序的GUI(點擊我要排序表中的字段名) 表被正確排序,但在那之後,當我選擇一行,它會得到 排序前存在的行的值。 這意味着在排序(使用JTable的GUI) 後,'myModel'和'resultsTable'對象具有不同的行索引。

如何同步這兩個?

回答

10

您需要使用的JTable中see the JavaDoc

int row = resultsTable.getSelectedRow(); 
if (row != -1) { 
    row = table.convertRowIndexToModel(row); 
    String value = (String) myModel.getValueAt(row, columnIndex) 
+0

非常感謝 – 2010-06-14 09:56:02

0

的 'convertXXX' 方法除了從溶液紀堯姆了(感謝) 我這樣做:

// resultsTable, myModel 

JTable resultsTable; 

DefaultTableModel myModel; //javax.swing.table.DefaultTableModel 

myModel = (DefaultTableModel) resultsTable.getModel(); 

// event of clicking on item of table 

String value = (String) **resultsTable**.getValueAt(resultsTable.getSelectedRow(), columnIndex) 

我用resultsTable對象而不是myModel Object來獲取值。

0

使用JTable.getValueAt()的問題是獲取所需的列。當在GUI中移動列時,索引「更改」以匹配視圖。通過使用AbstractTableModel.getValueAt()JTable.convertXXX()(如Guillaume所述),只需在檢索數據時使用模型的列索引即可。