java SWT中Label实时刷新当前时间

同样最近在开发swt的一个项目,业务中的一个功能模块类似百度网盘的上传进度条

0/80。

即已上传0个,总共80个。效果展示要的就是实时刷新,2/80呀,15/80呀,针对这个,就有了这篇文章。

下面附上【Label实时刷新时间】参考代码和原文链接,我是看这段代码加上这篇文章有的灵感。

public class test01
{
    private static Shell shell;

    public static void main(String[] args) {
        Display display = Display.getDefault();
        createContents();
        shell.open();
        shell.layout();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }


    protected static void createContents() {
        shell = new Shell();
        shell.setSize(450, 300);
        shell.setText("实时刷新时间");

        final Label label = new Label(shell, SWT.NONE);
        label.setFont(SWTResourceManager.getFont("微软雅黑", 13, SWT.NORMAL));
        label.setBounds(69, 48, 174, 41);
        new Thread() {//线程操作
            public void run()
            {
                while(true)
                {
                    try
                    {
                        //对Label进行实时刷新,需要加上这句
                        label.getDisplay().asyncExec(new Runnable()
                        {
                            @Override
                            public void run()
                            {
                                // 设置时间 ,格式化输出时间
                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                                String s = sdf.format(new Date());
                                label.setText(s);//输出到Label上
                            }
                        });
                        Thread.sleep(1000);//每隔一秒刷新一次
                    }
                    catch (Exception e)
                    {
                    }

                }
            }
        }.start();
    }
}

 

posted @ 2021-06-11 14:49  云村的王子  阅读(263)  评论(0编辑  收藏  举报