【问题标题】:How do i refresh a JList?如何刷新 JList?
【发布时间】:2018-02-23 11:27:45
【问题描述】:

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

数组列表:

private static ArrayList<String> name = new ArrayList<String>();

JList:

JList lisName = new JList(name.toArray());

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);
            }

        }

    });

提前感谢您的帮助

【问题讨论】:

标签: java swing arraylist jframe jlist


【解决方案1】:

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

在那里你可以做这样的事情:

DefaultListModel listModel = new DefaultListModel(name);
JList jList = new JList(listModel); //or setListModel(listModel)

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

由于该问题与 Stackoverflow 上的其他问题相似,您可以查看此链接,这应该对您有所帮助:

同时检查与您相关的问题。希望对您有所帮助。

【讨论】:

  • @Bravecity And when you want to update it, you can just use reload(), validate() or refresh(). - 不,不需要任何这些方法。您需要做的就是更新 ListModel,模型会告诉 JList 重新绘制自己。应始终对模型进行更改,而不是外部数据源(即您的 ArrayList)。
  • 如果它有助于解决问题,请accept the answer
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2013-09-01
  • 2011-03-17
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多