Java 如何刷新JList?

Java 如何刷新JList?,java,swing,arraylist,jframe,jlist,Java,Swing,Arraylist,Jframe,Jlist,我正在制作一个GUI,将一个名称添加到列表中,然后在主框架上有一个JList,当我点击另一个框架上的按钮时,我希望它更新JList,以将最近添加的字符串显示到arraylist中 ArrayList: private static ArrayList<String> name = new ArrayList<String>(); JButton我想更新列表: JButton btnAdd = new JButton("Add"); btnAdd.addActio

我正在制作一个GUI,将一个名称添加到列表中,然后在主框架上有一个JList,当我点击另一个框架上的按钮时,我希望它更新JList,以将最近添加的字符串显示到arraylist中

ArrayList:

private static ArrayList<String> name = new ArrayList<String>();
JButton我想更新列表:

JButton btnAdd = new JButton("Add");
    btnAdd.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(txtName.getText() == null) {
                JOptionPane.showMessageDialog(pnlName, "Error: Please enter name!");
            }else{
                name.add(txtName.getText());
                nameFrame.setVisible(false);
            }

        }

    });

感谢您提前提供的帮助

我建议您使用ListModel/TreeModel来处理JList、JTree等

在那里,您可以制作如下内容:

DefaultListModel listModel = new DefaultListModel(name);
JList jList = new JList(listModel); //or setListModel(listModel)
当您想要更新它时,您可以使用
reload()
validate()
refresh()
。所以你可以刷新列表的模型,一切都会好起来的。 或者您可以创建新的listModel并设置要显示的新值

由于该问题与Stackoverflow上的其他问题类似,您可以查看此链接,这将有助于您:


同时检查与您的相关问题。我希望我能帮上忙。

@Bravecity
当你想更新它时,你可以使用reload()、validate()或refresh()。
-不,不需要任何这些方法。您只需更新ListModel,模型就会告诉JList重新绘制自己。应始终对模型进行更改,而不是对外部数据源(即您的ArrayList)进行更改。如果这有助于解决问题,请参阅。1)请参阅2)更快地获得更好的帮助,发布或。
DefaultListModel listModel = new DefaultListModel(name);
JList jList = new JList(listModel); //or setListModel(listModel)