Tej*_*ran 5 java sorting jxtable
我面临着重复行的问题JXTable.如果我JXTable在插入新行时对数据进行排序JXTable,则最终结果会JXTable显示在表中产生无效结果的重复行.即使它也显示已插入的行的正确计数但有些行完全丢失,而某些行被发现重复JXTable.
如果我JXTable已经成功插入了所有数据,那么它显示正确的数据,即没有重复的行,也没有丢失的行.
代码示例:我有一个方法,我传递defaultTableModel,这里是在表中添加项目
public void addingItems(DefaultTableModel defaultTableModel)
{
for(int i=0;i< numberofItems;i++){
Vector vobject = new Vector();
vobject.add("...");
vobject.add("xxx");
vobject.add("yyy");
...
..
vobject.add("");
defaultTableModel.addRow(vobject);
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我在tableHeader actionlistener中添加了排序代码
tableheader.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
Vector data = defaultTableModel.getDataVector();
Collections.sort(data, new ColumnSorter(colIndex, ascending));
}
Run Code Online (Sandbox Code Playgroud)
});
我已将代码放入synchronized块中但未获得成功.
请提供更好的解决方案来解决此问题.
我已将代码放入同步块中,但没有成功。
因为您不仅必须在排序处理程序块中处理同步,而且还必须在每个修改操作上处理同步。
例如:
...
vobject.add("");
synchronized(monitor) {
defaultTableModel.addRow(vobject);
}
}
Run Code Online (Sandbox Code Playgroud)
和
...
Vector data = defaultTableModel.getDataVector();
synchronized(monitor) {
Collections.sort(data, new ColumnSorter(colIndex, ascending));
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果表中有大量数据,您的 UI 可能看起来有些无响应,因为排序为 N^2*logN。如果您有大约 200 个条目 - 这对您来说不会有问题。