创建仅包含字符串的JList的最简单方法(必须在运行时更改Jlist)

时间:2014-05-25 07:58:42

标签: java runtime jlist

我尝试先在Netbeans中创建一个Jlist,首先创建一个ScrollPane然后再添加一个Jlist。

然后我继续用一些字符串填充JList,使用defaultlistmodel.add(String a)。第一次很好地显示项目。但现在基于用户输入,我想清除列表模型中的所有元素并创建一个新列表。

这是我开始遇到一些问题的地方。 model.clear()似乎没有工作,也没有jList1.removeAllElements()..

我需要知道我哪里出错了?

 private void populateList(){

    readFileContents();
    model.clear();
    jScrollPane1.validate();

    for(String str : list){

        model.addElement(str);

    }

    jList1.setModel(model);

}

1 个答案:

答案 0 :(得分:0)

以下是如何重新填充JList

的示例
public class ClearList extends JFrame {

    String[] list1 = new String[] {"AAAA", "BBBB", "CCCC"};
    String[] list2 = new String[] {"1111", "2222", "3333"};
    DefaultListModel<String> model = new DefaultListModel<>();

    ClearList() {

        JList<String> list = new JList<>(model);
        addElements(list1);

        JButton button = new JButton("Repopulate");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                model.clear();
                addElements(list2);
            }
        });

        getContentPane().add(list);
        getContentPane().add(button, BorderLayout.LINE_START);

        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    private void addElements(String[] elements) {

        for (String s : elements)
            model.addElement(s);
    }

    public static void main(String[] args) {

        new ClearList();
    }
}

您应该考虑将addElements添加到扩展DefaultListModel的自定义类中,或者如果您要管理多个模型,请将其设为模型:addElements(String[] elements, ListModel model)