愚蠢地排序Jtable?

时间:2016-05-01 14:18:07

标签: java xml swing nullpointerexception

我必须创建一个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);

}

}

1 个答案:

答案 0 :(得分:1)

table.setAutoCreateRowSorter(true);
table = new JTable(data, collumnNames);

在我看来,你甚至想要在创建表格实例之前设置分拣机。

代码顺序应为:

table = new JTable(data, collumnNames);
table.setAutoCreateRowSorter(true);