在对JTable进行排序后,JTable和DefaultTableModel的行索引失去了同步

Ste*_*gas 3 java sorting synchronization jtable tablemodel

JAVA NETBEANS

// 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)
Run Code Online (Sandbox Code Playgroud)

我使用JTable和DefaultTableModel来查看各种信息的表,我想获得表的所选索引的某个列的值.

我上面编写的代码工作正常,除非:我使用GUI的类型(单击我要在表上排序的字段名称)表格已正确排序但在此之后,当我选择一行时,它获取的值排序前的那一行.这意味着在排序(使用JTable的GUI)之后,'myModel'和'resultsTable'对象具有不同的行索引.

我如何同步这两个?

Gui*_*ume 10

您需要在JTable上使用'convertXXX'方法,请参阅JavaDoc

int row = resultsTable.getSelectedRow();
if (row != -1) {
   row = table.convertRowIndexToModel(row);
   String value = (String) myModel.getValueAt(row, columnIndex)
Run Code Online (Sandbox Code Playgroud)