栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何异步触发JProgressBar?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何异步触发JProgressBar?

您需要长时间运行并在之外的单独Thread中更新进度栏值

EDT
。在大多数情况下,这
SwingWorker
是一个很好的方法。因此,在
ActionListener
该按钮中,应将长时间运行的线程与EDT分开。您可以赤手空拳来完成此任务,
Thread
并且专门
SwingWorker
针对此类情况设计:

package graphics;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.Jframe;import javax.swing.JOptionPane;import javax.swing.JProgressBar;import javax.swing.SwingUtilities;import javax.swing.SwingWorker;public class GraphicDev extends Jframe{    private static final long serialVersionUID = 679207429168581441L;    //    private static final int frame_WIDTH = 300;    private static final int frame_HEIGHT = 100;    private int percent;    private JProgressBar progress;    public GraphicDev() {        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();        setBounds(dim.width/2-frame_WIDTH/2, dim.height/2-frame_HEIGHT/2, frame_WIDTH, frame_HEIGHT);        setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        //        setLayout(new FlowLayout());        //        progress = new JProgressBar(0, 100);        progress.setStringPainted(true);        //        JButton actButton = new JButton("Start!");        actButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) {     new SwingWorker<Void, Void>() {         @Override         protected Void doInBackground() throws Exception {  for (long i = 0; i < 10000000000000L; i++) {      System.out.println(i);      if(i%200000 == 0){          progress.setValue(percent++);      }      if(percent >= 100){          break;      }  }  return null;         }         @Override         protected void done() {  JOptionPane.showMessageDialog(GraphicDev.this, "Done!");         }     }.execute();     }        });        //        add(actButton);        add(progress);    }    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     GraphicDev g = new GraphicDev();     g.setVisible(true); }        });    }}

希望这会有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号