java Jlist 如何实现已有内容刷新
如题!!!我在一个Jframe中加了一个myJpanel类继承了Jpanel,在MyJpanel中是一个Jlist,用来显示得到的数据!!一个按钮时,负责的相应监听更行S...
如题!!! 我在一个Jframe中加了一个myJpanel类继承了Jpanel,在MyJpanel中是一个Jlist,用来显示得到的数据!! 一个按钮时,负责的相应监听更行String[]数组重新传个Jlist 但控制台上显示新数组已经传递过去 ,但Jlist不显示刷新!! 怎么办??
setListData();方法不好使啊!!! 也不知道是不是我的逻辑错了!!! 先是JFrame用add添加MyJPanelJPanel继承JPanel,setVisible(true), 同时JFrame实例化MYJPanel;调其中的一个go()方法;
在MyJPanel 静态变量声明JList list、 JScrollPane scrollPane、String[] result 构造方法中实例list,和其他的外观 其他的类将得到的String[]传递进来 一部分代码如下 (百度字数限制,写不全)!!
public void go() {
label.setOpaque(true);
label.setForeground(color);
label.setEnabled(true);
label.setVisible(true);
add(label);
list.setListData(RESULTS);
list.setBorder(BorderFactory.createEtchedBorder());
list.setFixedCellHeight(20);
list.setFixedCellWidth(400);
list.setDragEnabled(true);
getscrollPane();
}
public void getscrollPane() {
scrollPane = new JScrollPane();
scrollPane.setViewportView(list);
add(scrollPane);
}
} 展开
setListData();方法不好使啊!!! 也不知道是不是我的逻辑错了!!! 先是JFrame用add添加MyJPanelJPanel继承JPanel,setVisible(true), 同时JFrame实例化MYJPanel;调其中的一个go()方法;
在MyJPanel 静态变量声明JList list、 JScrollPane scrollPane、String[] result 构造方法中实例list,和其他的外观 其他的类将得到的String[]传递进来 一部分代码如下 (百度字数限制,写不全)!!
public void go() {
label.setOpaque(true);
label.setForeground(color);
label.setEnabled(true);
label.setVisible(true);
add(label);
list.setListData(RESULTS);
list.setBorder(BorderFactory.createEtchedBorder());
list.setFixedCellHeight(20);
list.setFixedCellWidth(400);
list.setDragEnabled(true);
getscrollPane();
}
public void getscrollPane() {
scrollPane = new JScrollPane();
scrollPane.setViewportView(list);
add(scrollPane);
}
} 展开
3个回答
展开全部
楼主,这三个API,都可以刷新
void
setListData(Object[] listData)
根据一个对象数组构造只读 ListModel,然后对此模型调用 setModel。
void
setListData(Vector<?> listData)
根据一个 Vector 构造只读 ListModel,然后对此模型调用 setModel。
void
setModel(ListModel model)
设置表示列表内容或列表“值”的模型,通知属性更改侦听器,然后清除列表选择。
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");
}
}
也可以使用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");
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码贴上来~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询