swing 的JList里放一个list列表里的数据,遍历一行一行放进JList里,在线等 实例越小越简单,看懂就行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swing 的JList里放一个list列表里的数据,遍历一行一行放进JList里,在线等 实例越小越简单,看懂就行相关的知识,希望对你有一定的参考价值。
参考技术A List<String> list = new ArrayList<String>();for (int i = 0; i < 5; i++)
list.add(i+"");
jList = new JList(list.toArray());
试试看
在 JPanel 中更新 JList
【中文标题】在 JPanel 中更新 JList【英文标题】:Update JList in a JPanel 【发布时间】:2016-02-25 15:20:31 【问题描述】:我在 Eclipse 中创建了一个JFrame
,并使用Swing
设计选项在框架中放置了一个JList
。 Eclipse 将列表放在JPanel
中。在列表旁边,有几条文字fields(ID, name, etc.)
。用户填写字段并单击“添加”后,信息将存储在 SQLite JDBC 表中。但是,当用户单击添加时,我还希望 JList
自行更新并在列表中显示新记录。该列表仅在我重新启动程序时才会刷新。我尝试revalidate()
并在记录添加到数据库后重新绘制由Eclipse创建的面板,以及尝试revalidate()
并重新绘制列表。
【问题讨论】:
必须使用新值更新ListModel
。
【参考方案1】:
注册器和监听器的实现。试试这个代码
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);
【讨论】:
不要使用“code sn-p”标签。并不是说 cmets 用于不是 Java 的 JavaScript。只需使用“”按钮标记 Java 代码。以上是关于swing 的JList里放一个list列表里的数据,遍历一行一行放进JList里,在线等 实例越小越简单,看懂就行的主要内容,如果未能解决你的问题,请参考以下文章