通过AbstractTableModel获取选定的行

时间:2009-05-13 09:03:48

标签: java swing jtable

是否可以从我的表模型中获取所选行索引?

我的对象已经知道了表模型。我自己可以使用模型获取所选索引,而不是传递对表的引用吗?

4 个答案:

答案 0 :(得分:13)

就像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

答案 1 :(得分:6)

TableModel只关注数据,ListSelectionModel关注当前选择的内容,因此,不能从TableModel中获取所选行。

答案 2 :(得分:0)

如果你让你的模型类实现ListSelectionModel以及TableModel,你将能够从一个模型中获得选择......但是你不能扩展两个抽象模型类:-((无论如何它也不是很好的主意)因为你的班级将承担太多责任。)

答案 3 :(得分:0)

您可以从绑定表中获取索引,然后可以使用它来操作表模型。例如,如果我想在表模型中删除一行:

myTableModel.removeValueAt(myTable.getSelectedRow());