我有一个JTable,当点击相应的按钮时,它开始填充在后台继续的文件树步行的结果.这很好用.
然后我决定要对表进行排序.经过一些阅读后,我创建了一个TableRowSorter并设置表来使用它.它似乎工作,但仔细检查后,我注意到几个文件结果不存在.我禁用了分拣机并再次运行程序并且所有文件都存在,再次重新启用分拣机时有些遗漏,但每次丢弃时似乎都是不同的文件.
为了检验这一点,我创建了一个自包含的代码块作为测试(见下文),它代表了JTable代码(事实上,大块直接从现有程序代码中提取).文件树遍历由for循环表示.再次,没有分拣机它完美地工作.但是,当我启用分拣机时(通过取消注释第29行)整个程序冻结,我被告知有一个NullPointerException.
我不知道造成这些问题的原因是什么,事实上它们甚至是相关的.欢迎任何有关错误的想法.
import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Sort extends JFrame{
private JTable table;
private DefaultTableModel model;
private TableRowSorter<DefaultTableModel> sorter;
private JButton go;
public Sort(){
super("Sort");
// Create table and model
model = new DefaultTableModel(0, 4);
table = new JTable(model);
// Setup sorting
sorter = new TableRowSorter<DefaultTableModel>(model);
ArrayList<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(2, SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(3, SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
//table.setRowSorter(sorter);
// Create Scroll Pane
JScrollPane tableScroller = new JScrollPane(table); …Run Code Online (Sandbox Code Playgroud)