中易网

java Jlist 如何实现已有内容刷新

答案:2  悬赏:40  
解决时间 2021-02-17 15:57
java Jlist 如何实现已有内容刷新
最佳答案
楼主,这三个API,都可以刷新
void
setListData(Object[] listData)
根据一个对象数组构造只读 ListModel,然后对此模型调用 setModel。

void
setListData(Vector listData)
根据一个 Vector 构造只读 ListModel,然后对此模型调用 setModel。

void
setModel(ListModel model)
设置表示列表内容或列表“值”的模型,通知属性更改侦听器,然后清除列表选择。
全部回答
更新的话,可以使用自身的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("当前外观类名:\n" + lookAndFeel);
} catch (Exception ex) {
ex.printStackTrace();
}

}

public static void main(String[] args) {
new LookAndFeelDemo2("LookAndFeel");
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
鹿晗迪丽热巴庄在跑男里心跳指数是在哪一期
从合肥寄往青岛,大约一百四五十斤左右,走邮
足球的CM,CAM 都有什么区别?
NERO10刻录软件是不是蓝光刻录软件?
体育生考大学可以选什么系?
10年的别克君越能卖多少钱?
停车场(建设中路)(光亚东路与建设中路交叉口
求中医解释:为什么吃辛辣之物容易引起腹泻?
中国古代弹劾在当时有什么成文的规定吗?
推荐一点类似《她来听我的演唱会》安静一点的
炫彩棒和油画棒一样吗 棒棒彩和油画棒的区别
建筑执照是什么意思
我们昨天高考体检,检查到内科的听心脏时,说
9(3x+1)²=64
各位都给孩子选的什么德国预科啊?帕大的预科
推荐资讯
请教,胶菜和大白菜哪种做腌菜好?
什么舟什么什么
l隆昌古宇湖的那家农家乐好点?
《梦幻诛仙2》中的宠物技能“高级毒药”中说
说明n边形的内角和等于180°·(n-2)
租了一个很小的房子,想养一条小型犬,长不大
佛山市顺德区正和电器有限公司地址在哪,我要
地理学霸救我
约爱要冲会员才能聊天
85度c加盟费需要多少
某住宅小区四号楼三单元七楼左侧房间的门牌好
军舰的航行速度1节,2节是什么意思?是多少千
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?