テーブルモデルから選択した行インデックスを取得することはできますか?
私のオブジェクトはすでにテーブルモデルについて知っています。テーブルへの参照を渡す代わりに、モデルを使用して選択したインデックスを取得できますか?
MrWigglesが言ったように、テーブル自体からアクセスできるListSelectionModelから取得できます。ただし、JTableには、選択した行を取得するための便利なメソッドもあります。テーブルが並べ替え可能などの場合は、convertRowIndexToModelメソッドも実行する必要があります:)
JTable JavaDocから:
int[] selection = table.getSelectedRows();
for (int i = 0; i < selection.length; i++) {
selection[i] = table.convertRowIndexToModel(selection[i]);
}
// selection is now in terms of the underlying TableModel
TableModelはデータのみに関係し、ListSelectionModelは現在選択されているものに関係するため、TableModelから選択した行を取得することはできません。
モデルクラスにListSelectionModelとTableModelを実装させると、1つのモデルから選択を取得できます...ただし、2つの抽象モデルクラスを拡張することはできません:-((クラスとしてはあまり良い考えではありません)責任が多すぎます)。
バインドされたテーブルからインデックスを取得し、それを使用してテーブルモデルを操作できます。たとえば、テーブルモデルの行を削除する場合は次のようになります。
myTableModel.removeValueAt(myTable.getSelectedRow());