[英]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.