Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何选择JTable中最后插入的行?_Java_Swing_Jtable - Fatal编程技术网

Java 如何选择JTable中最后插入的行?

Java 如何选择JTable中最后插入的行?,java,swing,jtable,Java,Swing,Jtable,我有一个包含两列的JTable和一个表模型,该表模型使用一个与哈希映射一起工作的类。此映射的元素是表行 每次添加新元素时,无论排序如何,都需要选择该元素。现在,我尝试使用以下方法: int lastRow = table.convertRowIndexToView(tableModel.getRowCount() - 1); table.setRowSelectionInterval(lastRow, lastRow); 问题是,只有当我以排序的方式添加数据时(例如“a”、“B”、“C”,而不

我有一个包含两列的JTable和一个表模型,该表模型使用一个与哈希映射一起工作的类。此映射的元素是表行

每次添加新元素时,无论排序如何,都需要选择该元素。现在,我尝试使用以下方法:

int lastRow = table.convertRowIndexToView(tableModel.getRowCount() - 1);
table.setRowSelectionInterval(lastRow, lastRow);
问题是,只有当我以排序的方式添加数据时(例如“a”、“B”、“C”,而不是因为“D”被放在一次添加的数据之前),这才有效。有人能告诉我如何解决这个问题吗?

最好使用

同样,最后添加的行在
JTables
视图中也不可见

取决于,但默认情况下您可以这样做

table.setRowSelectionInterval(lastRow, lastRow);
table.setColumnSelectionInterval(columnMinIndex, columnMaxIndex);

为了获得更好的帮助,请尽快发布一个SSCCE,简短、可运行、可编译,在JScrollPane中大约
JFrame
JTable
和一个新的
addRow
swing.Timer
触发,问题最有可能出现在
TableModel
中,因为您发布的代码很好。您提到您使用了一个
HashMap
来存储
TableModel
的数据。HashMap的问题是它没有任何顺序。向其中添加元素可能会改变您在映射中获取元素的顺序


最好使用尊重顺序的数据结构。

创建一个扩展JTable的类来存储最后插入的元素,或者保留插入顺序的列表,怎么样?Robin是正确的,不要使用HashMap,更喜欢ArrayList作为数据源是的,我意识到HashMap是个问题。我修正了这个问题,在添加一个新元素后,我检查了我的表,在我前进的过程中比较了键,并在点处断开键,键等于表中的键。这是我需要选择的行,然后我简单地调用了上面的行。@Nikolaluburia听起来你的模型实现可能是无效的:不应该通过插入来更改行的顺序。如果插入确实更改了现有行的顺序,那么模型必须触发dataChanged(这将丢失任何选择并造成您所遇到的问题:-)。