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里,在线等 实例越小越简单,看懂就行的主要内容,如果未能解决你的问题,请参考以下文章

GUI JList列表框练习

GUI JList列表框练习二

java swing中jList滚动条位置问题

监听JList列表项的单击事件

Java swing弹出菜单和jlist

是否可以更改 Java Swing jList 中项目的名称*显示*?