繁体   English   中英

如何刷新 JList?

[英]How do I refresh a JList?

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

ArrayList:

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

清单:

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

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

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

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

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

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

还要检查您的相关问题。 我希望我是有帮助的。

在过去的两天里,我一直在搜索数十个关于 SO 的答案,试图解决这个问题。 这里的其他人建议致电yourJList.ensureIndexIsVisible(yourModel.getSize()); ,但是这对我不起作用。

对我有用的是调用yourJList.requestFocus(); addElement(String); . 希望这对某些人有所帮助,因为我对此感到非常沮丧。

编辑:更改命名约定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM