我必须创建一个GUI,它使用一个从XML中获取数据的表,然后通过单击它们来对列进行排序......到目前为止,除了排序部分给我一个NullPointerException(我最喜欢的) )我无法理解,因为一切都很好,直到我把这行代码放在table.setAutoCreateRowSorter(true);
关于它为什么不起作用的任何想法?
JTable table;
public Table() {
ArrayList<Person> personList = XML.getPersonList();
JPanel mainPanel = new JPanel();
JPanel upperPanel = new JPanel();
JPanel lowerPanel = new JPanel();
JButton createPersonButton = new JButton("Create");
String[] collumnNames = { "Name", "Age", "Email" };
String[][] data;
data = new String[50][3];
createPersonButton.addActionListener(new createListener());
setLayout(new GridLayout(1, 2));
for (int i = 0; i < personList.size(); i++) {
data[i][0] = personList.get(i).getEmail();
data[i][1] = personList.get(i).getFullName();
data[i][2] = personList.get(i).getAge();
}
table.setAutoCreateRowSorter(true);
table = new JTable(data, collumnNames);
table.setPreferredScrollableViewportSize(new Dimension(430, 300));
table.setFillsViewportHeight(true);
JScrollPane scroll = new JScrollPane(table);
table.setFillsViewportHeight(true);
lowerPanel.add(createPersonButton);
upperPanel.add(scroll);
mainPanel.add(upperPanel);
mainPanel.add(lowerPanel);
setContentPane(mainPanel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(650, 400);
setVisible(true);
}
}
答案 0 :(得分:1)
table.setAutoCreateRowSorter(true);
table = new JTable(data, collumnNames);
在我看来,你甚至想要在创建表格实例之前设置分拣机。
代码顺序应为:
table = new JTable(data, collumnNames);
table.setAutoCreateRowSorter(true);