我SWING里有个JProgressBar 控制,如何在调用CALSS时修改JProgressBar 的百分比??

jackwin 2008-07-11 04:46:44
JProgressBar progressBar;
progressBar = new JProgressBar();
progressBar.setStringPainted(true);

如在MAIN里有调用了A的CALSS里的函数C(),在C()里如何把JProgressBar 的百分比改变?
import XXX.XXX.a;
a q = new a();
a.C()的函数是完成计算的过程,而我想用JProgressBar 来显示C()完成的进度!!

我应该怎办??
...全文
126 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shmilycharlene 2008-07-13
lexchen说的是java推荐的方法.使用硬编码进行修改会使程序的结构很乱
回复
yzzlijun 2008-07-12
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class LoginProgressFrame extends JDialog implements Runnable {
private JProgressBar bar;
private Container me;
private JLabel lblBackground;
private JLayeredPane layPane;
private JLabel lblTitle;
private Thread thread;
private String userName;
Random random = new Random();
public LoginProgressFrame(String userName) {
init();
this.userName = userName;
this.setSize(400,300);
this.setUndecorated(true);//没有标题栏
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
}
public void init() {

lblBackground = new JLabel(new ImageIcon("image/login.jpg"));
me = (JPanel) getContentPane();
me.setLayout(new BorderLayout());
me.add(lblBackground);
setSize(new Dimension(400,300));
bar = new JProgressBar();
bar.setForeground(Color.blue);
bar.setBounds(50,200,300,40);
bar.setStringPainted(true);//设置进度条字
lblTitle = new JLabel("欢迎使用本系统");
lblTitle.setBounds(50,50,280,30);
layPane = this.getLayeredPane();
layPane.add(bar);
layPane.add(lblTitle);
thread = new Thread(this);
thread.start();
}
public void run() {
while(bar.getValue() < bar.getMaximum()) {
bar.setValue(bar.getValue() + random.nextInt(10));
try {
thread.sleep(200);
}catch(InterruptedException ie) {
ie.printStackTrace();
}
}
this.dispose();
new MainFrame(userName);
}
}
用线程加随机数来控制
回复
LexChen 2008-07-11
嗯,让A这个类在需要更改进度条的时候抛出一个事件,事件里包含了新
的进度信息,

在实例化A的一个对象a后,给a增加一个监听器,同时包含进度条的类
实现了a的监听器的监听方法,在监听方法里根据进度信息更新进度条显示

呵呵,简单说就是这样。

就是这个板块,很久以前有篇标题“对Swing线程的再思索”的文章说的比较清楚
不知道还能不能查到
回复
jackwin 2008-07-11
Craky这个progressBar.setValue(一个整数) 当然知道

LexChen 的事件-监听器?
回复
LexChen 2008-07-11
比较好的办法是使用“事件-监听器”机制

比较简单但是不推荐的方式是将 JProgressBar 作为参数传递给 a.C
在 a.C 里调用JProgressBar的方法setValue动态修改
回复
craky 2008-07-11
具体方法是progressBar.setValue(一个整数)
至于怎么调你自己看着办,因为你的代码逻辑只有你最清楚
回复
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2008-07-11 04:46
社区公告
暂无公告