功能很简单,点击按钮加入jlist一行,不过加入以后,我发现arraylist确实增大了,不过jlist变成了一片空白,不知道为什么,我看很多东西写的都是这样做的。
public class TryJlist extends JFrame{ /**
* @param args
*/
public ArrayList<String> list;
public JList jlist;
public TryJlist() {
list = new ArrayList<String>();
list.add("item1");
list.add("item2");
list.add("itme3");
jlist = new JList(new MyModel());
JScrollPane panel = new JScrollPane(jlist);
JButton button = new JButton("change");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
list.add("additem");
System.out.println(list.size());
jlist.repaint();
}
});
add(panel, BorderLayout.CENTER);
add(button, BorderLayout.NORTH);
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new TryJlist();
}
class MyModel extends DefaultListModel {
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return list.get(index);
//return super.getElementAt(index);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
System.out.println(list.size());
return list.size();
//return super.getSize();
}
}
}
public class TryJlist extends JFrame{ /**
* @param args
*/
public ArrayList<String> list;
public JList jlist;
public TryJlist() {
list = new ArrayList<String>();
list.add("item1");
list.add("item2");
list.add("itme3");
jlist = new JList(new MyModel());
JScrollPane panel = new JScrollPane(jlist);
JButton button = new JButton("change");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
list.add("additem");
System.out.println(list.size());
jlist.repaint();
}
});
add(panel, BorderLayout.CENTER);
add(button, BorderLayout.NORTH);
setSize(400, 300);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new TryJlist();
}
class MyModel extends DefaultListModel {
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return list.get(index);
//return super.getElementAt(index);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
System.out.println(list.size());
return list.size();
//return super.getSize();
}
}
}
解决方案 »
- 新手菜鸟,问关于数组的问题
- 一些复杂的逻辑该放到service里还是放到对象里?
- str a="123"; b=a.substring(0,1) ;if ( b=="1") 不成立,为什么
- hibernate session关闭的问题以及autocommit的问题
- 一个树的算法问题,作过的高手赐教
- 到底JAVA中,哪个开发工具好点?
- 关于字符串比较是不是==就可以
- 怎样设置系统和用户系统参数,一个初学者的问题!请不要奸笑。
- 谁能给出一个连接sqlserver数据库的源码,谢
- 下列代码为何有时正确有时错误?????关于数据库查询结果时有时无的问题。
- 请教高手一个问题 关于图片输入的格式
- <html:file标签,form提交不成功,内容被清空的问题。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;public class TryJlist extends JFrame {
public ArrayList<String> list;
public JList jlist; public TryJlist() {
list = new ArrayList<String>();
list.add("item1");
list.add("item2");
list.add("itme3");
jlist = new JList(new MyModel());
JScrollPane panel = new JScrollPane(jlist);
JButton button = new JButton("change");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
list.add("additem");
System.out.println(list.size());
jlist.setModel(new MyModel());
//jlist.repaint();
}
});
add(panel, BorderLayout.CENTER);
add(button, BorderLayout.NORTH);
setSize(400, 300);
setVisible(true);
} public static void main(String[] args) {
new TryJlist();
}
class MyModel extends DefaultListModel { public Object getElementAt(int index) {
// TODO Auto-generated method stub return list.get(index);
// return super.getElementAt(index);
} public int getSize() {
// TODO Auto-generated method stub
System.out.println(list.size());
return list.size();
// return super.getSize();
}
}
}
fireIntervalAdded(obj, vector.size(), vector.size()); 这个方法才可以,否则是不会更新的,而删除则需要调用fireIntervalRemoved(Object source, int index0, int index1)才可以。感觉如果不是看源代码的话自己实现起来还是比较麻烦的。
MyModel mm = new MyModel();
每次更新的时候mm.add()就OK了。