永发信息网

java JList 添加数据后,如何更新啊

答案:4  悬赏:50  手机版
解决时间 2021-03-05 09:31
  • 提问者网友:临风不自傲
  • 2021-03-04 17:44
java JList 添加数据后,如何更新啊
最佳答案
  • 五星知识达人网友:酒者煙囻
  • 2021-03-04 19:14
更新的话,可以使用自身的validate方法;
也可以使用SwingUtiltis.updateComponentUI等方法解决。
示例代码如下:


import java.awt.*;
import java.awt.event.*;
 
import javax.swing.*;
 
public class LookAndFeelDemo2 extends JFrame {
 
    private JRadioButton radio1 = new JRadioButton("Metal");
    private JRadioButton radio2 = new JRadioButton("Windows");
    private JRadioButton radio3 = new JRadioButton("Motif");
    private JPanel panelNorth = new JPanel();
    private JPanel panelSouth = new JPanel();
    private JTextArea area = new JTextArea(6, 20);
    private JButton btn = new JButton("button");
    private JCheckBox chk = new JCheckBox("checkBox");
    private JComboBox cmbLookAndFeel = new JComboBox(new String[] { "Metal",
            "Widows", "Motif", "GTK" });
 
    public LookAndFeelDemo2(String title) {
        super(title);
        Container contentPane = this.getContentPane();
        ButtonGroup group = new ButtonGroup();
        group.add(radio1);
        group.add(radio2);
        group.add(radio3);
 
        panelNorth.add(radio1);
        panelNorth.add(radio2);
        panelNorth.add(radio3);
 
        panelSouth.add(btn);
        panelSouth.add(chk);
        panelSouth.add(cmbLookAndFeel);
 
        contentPane.add(panelNorth, BorderLayout.NORTH);
        contentPane.add(area, BorderLayout.CENTER);
        contentPane.add(panelSouth, BorderLayout.SOUTH);
        pack();
 
        setVisible(true);
        setSize(300, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        // 监听Item事件
        radio1.addItemListener(new MyItemListener());
        radio2.addItemListener(new MyItemListener());
        radio3.addItemListener(new MyItemListener());
 
    }
 
    private class MyItemListener implements ItemListener {
 
        public void itemStateChanged(ItemEvent e) {
            // 取得点击按钮的名字
            String itemName = ((JRadioButton) e.getSource()).getText();
            changeLookAndFeel(itemName);
        }
    }
 
    // 设置外观的private类型方法
 
    private void changeLookAndFeel(String name) {
 
        String lookAndFeel = "";
        if (name.equals("Metal")) {
            lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel";
 
        } else if (name.equals("Windows")) {
            lookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        } else if (name.equals("Motif")) {
            lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        }else{
            //取得默认的metal外观
            lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel";
        }
 
        try {
            UIManager.setLookAndFeel(lookAndFeel);
            // 运行时指定LookAndFeel,需要SwingUtilities.updateComponentTreeUI(Component
            // c)实现动态的更新
            SwingUtilities.updateComponentTreeUI(this);
            area.setText("当前外观类名:
" + lookAndFeel);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
 
    }
 
    public static void main(String[] args) {
        new LookAndFeelDemo2("LookAndFeel");
    }
}
全部回答
  • 1楼网友:酒安江南
  • 2021-03-04 21:41
同huacuobin,重置setListData()。
  • 2楼网友:孤独的牧羊人
  • 2021-03-04 21:36
楼主,使用jlist.setModel(listModel)去更新数据
  • 3楼网友:青尢
  • 2021-03-04 20:28
我不知道怎么更新列表,但是你可以重置一下整个列表。
不太清楚你的动态添加是什么意思。
我一般的做法是用一个ArrayList来维护Jlist里的数据。。
每次添加删除都是操作ArrayList里的数据,然后再
jList.setListData(list.toArray());刷新Jlist一下数据就好。。不知道你是不是想要这个结果。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯