基础问题,请高手指教,见着有分 找出debug出错的地方,贴出出错信息,这样你我都方便!代码太长,看得头疼!呵呵! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于Swing不是线程安全的,所以Swing组件必须从事件派发线程中更新。并且,耗时的活动不应当从事件派发线程中完成,因为在耗时活动完成之前不会处理其他事件。所以,如果你在第二个程序中的下面的方法中添加System.out.println(i);便会发现:直到i变成100Swing组件才会改变。private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { // Add your handling code here: try { jProgressBar1.setMaximum(100); for(int i=0;i<100;i++) { Thread.sleep(50); System.out.println(i);//这是添加的语句。 jProgressBar1.setValue(jProgressBar1.getValue()+1); } } 也就是说,你必须像第一个例子那样,用线程控制JProgressBar,可参考《java2图形设计,卷2》 可以解决第2段代码的问题:只需要在方法 jButton1MouseClicked()内的 setValue() 之后加入一句:jProgressBar1.paint(jProgressBar1.getGraphics()); private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { // Add your handling code here: try { jProgressBar1.setMaximum(100); for(int i=0;i<100;i++) { Thread.sleep(50); jProgressBar1.setValue(jProgressBar1.getValue()+1); jProgressBar1.paint(jProgressBar1.getGraphics());// add } } catch (InterruptedException e) { } } 我把你的程序放在jbuilder8中运行了一下,两个效果是一样的啊,都可以正常运行的没见到什么错误信息 非常感谢stonecsdn(东东) 与 kinzey34(无声之舞) 的热心帮助。问题得到解决,对stonecsdn(东东)所说的还是有些不清楚,私下再去找这本《java2图形设计,卷2》看了之后再请指教。不知道kinzey34(无声之舞) 所说的方法是否常用或者是被提倡使用?实际开发中是否还是应该采用第一种方法?请各位再指教一二。 是啊!由于Swing不是线程安全的,所以Swing组件必须从事件派发线程中更新.但kinzey34(无声之舞)的程序里没有啊! kinzey34(无声之舞)的程序使进度条重绘,使之能正常显示 在java中用jxl将SqlServer数据库中的数据导出生成execl表格 一个JAVA的数字排列组合的算法题目? 中软的一道面试题,感兴趣的来试试! 画图问题 每次画图 怎么覆盖 才不会覆盖原来的图形 Applet怎么样调用本地的C/C++? 请教Boolean.getBoolean(String name)这个方法 求教关于SWT Wizard开发的按钮控制问题 急 请问HashTable是怎么样用的?,谢谢! 真题一条,请高手帮忙! 怎样在java里四舍五入? 帮我看这段程序好吗? 这两句有问题吗?
所以,如果你在第二个程序中的下面的方法中添加System.out.println(i);便会发现:
直到i变成100Swing组件才会改变。
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
// Add your handling code here:
try {
jProgressBar1.setMaximum(100);
for(int i=0;i<100;i++) {
Thread.sleep(50);
System.out.println(i);//这是添加的语句。
jProgressBar1.setValue(jProgressBar1.getValue()+1);
}
}
也就是说,你必须像第一个例子那样,用线程控制JProgressBar,可参考《java2图形设计,卷2》
只需要在方法 jButton1MouseClicked()内的 setValue() 之后加入一句:
jProgressBar1.paint(jProgressBar1.getGraphics());
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
// Add your handling code here:
try {
jProgressBar1.setMaximum(100);
for(int i=0;i<100;i++) {
Thread.sleep(50);
jProgressBar1.setValue(jProgressBar1.getValue()+1);
jProgressBar1.paint(jProgressBar1.getGraphics());// add
}
}
catch (InterruptedException e) {
}
}
两个效果是一样的啊,都可以正常运行的
没见到什么错误信息
问题得到解决,对stonecsdn(东东)所说的还是有些不清楚,私下再去找这本《java2图形设计,卷2》看了之后再请指教。
不知道kinzey34(无声之舞) 所说的方法是否常用或者是被提倡使用?
实际开发中是否还是应该采用第一种方法?
请各位再指教一二。