3

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)

JTableとDefaultTableModelを使用してさまざまな情報のテーブルを表示し、テーブルの選択されたインデックスの特定の列の値を取得したいと思います。

上記で記述したコードは、次の場合を除いて正常に機能します。GUIの並べ替えを使用する(テーブルで並べ替えるフィールド名をクリックする)テーブルは適切に並べ替えられますが、その後、行を選択すると、次の値が取得されます。ソート前にあった行。これは、(JTableのGUIを使用して)ソートした後、「myModel」オブジェクトと「resultsTable」オブジェクトの行インデックスが異なることを意味します。

これら2つを同期するにはどうすればよいですか?

4

3 に答える 3

10

JTableで「convertXXX」メソッドを使用する必要があります。JavaDocを参照してください。

int row = resultsTable.getSelectedRow();
if (row != -1) {
   row = table.convertRowIndexToModel(row);
   String value = (String) myModel.getValueAt(row, columnIndex)
于 2010-06-14T09:40:13.230 に答える
0

ギヨームが与えた解決策を除いて(ありがとう)私はこれをしました:

// 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)

myModelオブジェクトの代わりにresultsTableオブジェクトを使用して、値を取得しました。

于 2010-06-14T09:59:26.190 に答える
0

を使用する際の問題JTable.getValueAt()は、必要な列を取得することです。GUIで列を移動すると、ビューに一致するようにインデックスが「変更」されます。AbstractTableModel.getValueAt()および(Guillaumeで概説されている)を使用JTable.convertXXX()することにより、データを取得するときにモデルの列インデックスを使用するだけで済みます。

于 2011-11-14T07:32:41.203 に答える