簡體   English   中英

在JPanel中更新JList

[英]Update JList in a JPanel

我已經在Eclipse中創建了一個JFrame ,並且還使用Swing設計選項在框架中放置了一個JList Eclipse將列表放入JPanel 在列表旁邊,有一些文本fields(ID, name, etc.) 用戶填寫字段並單擊“添加”后,信息將存儲在SQLite JDBC表中。 但是,當用戶單擊添加時,我還希望JList更新自身並在列表中顯示新記錄。 僅當我重新啟動程序時,列表才會刷新。 在將記錄添加到數據庫后,我嘗試過revalidate()和重新繪制由Eclipse創建的面板,以及嘗試revalidate()和重新繪制列表。

注冊和偵聽器實現。 試試這個代碼

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyFrame extends JFrame implements ActionListener {
    private JButton button = new JButton("Click me!");
    private DefaultListModel<String> listModel = new DefaultListModel<String>();
    private JList<String> list = new JList<String>(listModel);
    private int counter = 1;

    public MyFrame() {
        setTitle("Test Updates");

        JTabbedPane tabs = new JTabbedPane();
        add(tabs, BorderLayout.CENTER);

        JPanel panel = new JPanel();
        panel.add(list);
        tabs.add("Selections", panel);

        panel = new JPanel();
        button.addActionListener(this);
        panel.add(button);
        tabs.add("Options", panel);

        pack();
    }

    @Override
        public void actionPerformed(final ActionEvent event) {
        if (button.equals(event.getSource())) {
            listModel.addElement("Item " + counter++);
        }
    }

    /* Test it! */
    public static void main(String[] args) {
        final MyFrame frame = new MyFrame();
        frame.addWindowListener(new WindowAdapter(){
            @Override public void windowClosing(final WindowEvent e) {
            frame.setVisible(false);
            frame.dispose();
            System.exit(0);
        }
        });

        frame.setVisible(true);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM