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

Java

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

Java

SwingWorker
为此非常理想。下面的示例在后台执行一个简单的迭代,同时在一个窗口中报告进度和中间结果。你可以在合适的
SwingWorker
构造函数中传递所需的任何参数。

import java.awt.EventQueue;import java.awt.GridLayout;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.text.DecimalFormat;import java.util.List;import javax.swing.*;public class TwoRoot extends Jframe {    private static final String s = "0.000000000000000";    private JProgressBar progressBar = new JProgressBar(0, 100);    private JLabel label = new JLabel(s, JLabel.CENTER);    public TwoRoot() {        this.setLayout(new GridLayout(0, 1));        this.setTitle("√2");        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        this.add(progressBar);        this.add(label);        this.setSize(161, 100);        this.setLocationRelativeTo(null);        this.setVisible(true);    }    public void runCalc() {        progressBar.setIndeterminate(true);        TwoWorker task = new TwoWorker();        task.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent e) {     if ("progress".equals(e.getPropertyName())) {         progressBar.setIndeterminate(false);         progressBar.setValue((Integer) e.getNewValue());     } }        });        task.execute();    }    private class TwoWorker extends SwingWorker<Double, Double> {        private static final int N = 5;        private final DecimalFormat df = new DecimalFormat(s);        double x = 1;        @Override        protected Double doInBackground() throws Exception { for (int i = 1; i <= N; i++) {     x = x - (((x * x - 2) / (2 * x)));     setProgress(i * (100 / N));     publish(Double.valueOf(x));     Thread.sleep(1000); // simulate latency } return Double.valueOf(x);        }        @Override        protected void process(List<Double> chunks) { for (double d : chunks) {     label.setText(df.format(d)); }        }    }    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     TwoRoot t = new TwoRoot();     t.runCalc(); }        });    }}


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

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

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