import java.awt.*;
import javax.swing.*;
import java.awt.event.*;public class ListTest extends JFrame {
DefaultListModel model = new DefaultListModel();
JList list = new JList(model);
JButton btn = new JButton("Test"); public ListTest() {
getContentPane().add(new JScrollPane(list),BorderLayout.CENTER);
getContentPane().add(btn,BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("======= Remove ====");
model.removeAllElements();
System.out.println("======= Removed ====");
for (int i=0;i<3000;i++){
model.addElement("String -- "+i);
}
System.out.println("======== Added ========");
}
});
}
public static void main(String[] args) {
ListTest listtest = new ListTest();
listtest.pack();
listtest.setVisible(true);
}
}
就上面这点代码,就是在一个JList里面放了3000个Item, 不停的点按钮刷新,没发现什么问题吧,
但是要是你选中第一个Item,再点按钮试试呢,这时候界面就会出现一个长时间的跟死了一样的过程, 而且我发现并没有立即打印我的第一句调试语句,接着看后面两句调试语句,Add过程也耗时不少,
这是什么原因呢??而且只有当第一个Item被选中的时候点击按钮会出现这种现象,选其他的或者不选直接刷新,都没有发现这个问题,
我折腾了一晚上没想明白是什么原因。
大家帮忙看看,是哪边的问题呢??难道是JList的BUG??
import javax.swing.*;
import java.awt.event.*;public class ListTest extends JFrame {
DefaultListModel model = new DefaultListModel();
JList list = new JList(model);
JButton btn = new JButton("Test"); public ListTest() {
getContentPane().add(new JScrollPane(list),BorderLayout.CENTER);
getContentPane().add(btn,BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("======= Remove ====");
model.removeAllElements();
System.out.println("======= Removed ====");
for (int i=0;i<3000;i++){
model.addElement("String -- "+i);
}
System.out.println("======== Added ========");
}
});
}
public static void main(String[] args) {
ListTest listtest = new ListTest();
listtest.pack();
listtest.setVisible(true);
}
}
就上面这点代码,就是在一个JList里面放了3000个Item, 不停的点按钮刷新,没发现什么问题吧,
但是要是你选中第一个Item,再点按钮试试呢,这时候界面就会出现一个长时间的跟死了一样的过程, 而且我发现并没有立即打印我的第一句调试语句,接着看后面两句调试语句,Add过程也耗时不少,
这是什么原因呢??而且只有当第一个Item被选中的时候点击按钮会出现这种现象,选其他的或者不选直接刷新,都没有发现这个问题,
我折腾了一晚上没想明白是什么原因。
大家帮忙看看,是哪边的问题呢??难道是JList的BUG??
解决方案 »
- 面向对象与面向过程的具体优劣
- 在线急等啊。各位大哥大姐小弟小妹们,给帮帮忙。
- Resultset如何知道当前Table中选定的是哪一条记录?看到Resultset是用next()遍历所有记录的!
- java 打印 如何实现横向分页
- 小第初学java,在写一个applet小程序的时候出了点错,不知如何解决,请高手赐教,谢谢~~
- 今天突然发现!...........................
- socket和 servlet通信的异同?***************
- 一个java初级问题,关于编译的时候“java.awt.event”错误 ~*~
- Java中字符串相等的判断!
- jb4编辑器为什么这么怪?
- Java Applet 与JavaScript 的通信
- 下班前的救命!把日文转成JIS 编码的方法和逆转的方法
环境:Jbuilder9,JDK1.4.2
测试结果:完全正常,没发现楼主说的情况
运行正常,可能是JB问题
我考 LS的 你的性欲着么搞得这么低..貌似看破红尘拉 哈哈
------------------------------------------------------
LS和LS的LS性欲加起来刚好100,貌似
{
public void actionPerformed(ActionEvent e)
{
new Thread()
{
public void run()
{
System.out.println("======= Remove ====");
model.removeAllElements();
System.out.println("======= Removed ====");
for (int i=0;i<3000;i++)
model.addElement("String -- "+i);
System.out.println("======== Added ========");
}
}.start();
}
});
放在一个线程里试试
JBuilder 2006, java version 1.5.0_03-b07 , 有我说的问题
换成 java version 1.4.2_03-b02 就没出现这种情况了,不知道啥原因。