免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2541 | 回复: 1
打印 上一主题 下一主题

netbean 6.1 下操作 JProgressBar 操作问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-10 14:02 |只看该作者 |倒序浏览
在netbean 6.1中,可以直接新建一个Desktop application 的工程,系统会自动生成N多组件,
其中包括JProgressBar.
可是,它怎么操作呢?
它自己生成的在运行时根本不显示,
自己再拖进去一个?只显示一白条。我通过setValue改变它的值的时候,一点反应也没有。
哪位朋友知道该怎么操作呢?
气得我自己写了一个小程序。
运行后还好,如下:
import java.awt.*;

import javax.swing.*;

public class Progress extends JFrame {

    JProgressBar current;
//    JTextArea out;
    JButton find;
//  Thread runner;
    int num = 0;

    public Progress() {
        super("Progress");
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pane = new JPanel();
        pane.setLayout(new FlowLayout());
        current = new JProgressBar(0, 2000);
        current.setValue(0);
        current.setStringPainted(true);
        pane.add(current);
        setContentPane(pane);
    }


    public void iterate() {
        while (num < 2000) {
            current.setValue(num);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) { }
            num += 95;
        }
    }

    public static void main(String[] arguments) {
        Progress frame = new Progress();
        frame.pack();
        frame.setVisible(true);
        frame.iterate();
  }
}


可怎么才能操作系统自动生成的那个条呢?

论坛徽章:
0
2 [报告]
发表于 2008-10-27 11:31 |只看该作者
来自专家Leon的答复: Netbeans 中该部分运用了新的 Swing 框架 JSR-296,要与该 progressbar 联系,应该产生新的 Task, 在Task中调用 setProgress()即可。下面给了一个简单的事例,你点击 "About"菜单可以看到 Progress 的变化:
@Action public Task showAboutBox() {
return new RefreshTask(DesktopApplication2.getApplication());
}
private class RefreshTask extends Task {
RefreshTask(org.jdesktop.application.Application app) {
super(app);
}
@SuppressWarnings("unchecked")
@Override protected Void doInBackground() {
try {
setProgress(0, 0, 4);
setMessage("Rolling back the current changes...");
setProgress(1, 0, 4);
Thread.sleep(1000L); // remove for real app
setProgress(2, 0, 4);

setMessage("Starting a new transaction...");
Thread.sleep(500L); // remove for real app
setProgress(3, 0, 4);

setMessage("Fetching new data...");
Thread.sleep(1300L); // remove for real app
setProgress(4, 0, 4);

Thread.sleep(1500L); // remove for real app
} catch(InterruptedException ignore) { }
return null;
}
@Override protected void finished() {
setMessage("Done.");
}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP