簡體   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