使JDialog不断改变文本就像“工作......”

时间:2013-07-23 17:39:44

标签: loops jlabel jdialog settext

我有一个简单的JDialog,其中包含一个进度条,我希望它有一个JLabel,如下所示:

工作。 - >工作.. - >工作...

大约每0.25秒。

我是否只是连续循环设置JLabel的文字?

我知道这必须是一个简单的解决方案,但我似乎无法在任何地方找到它!

Per @ David的回复如下。这是我的WorkingDialog(扩展了JDialog)构造函数的大部分内容:

    final JLabel lblWorking = new JLabel("Working.");
    contentPanel.add(lblWorking, gbc_lblWorking);

    SwingWorker<Void, Void> sw = new SwingWorker<Void, Void>()
    {

        @Override
        protected Void doInBackground() throws Exception
        {
            while (!isCancelled())
            {
                if (!lblWorking.getText().equals("Working..."))
                {
                    lblWorking.setText("Working.");
                } else
                {
                    lblWorking.setText(lblWorking.getText() + ".");
                }
            }

            return null;
        }
    };

    setVisible(true);
    sw.run();

当我调用新的WorkingDialog()时,框架会出现,但就此而言。有谁知道为什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

创建一个守护程序,每隔0.25秒更新一次标签。不要忘记在更新标签时使用SwingUtils.invokeLater()。

我猜你也应该能够使用SwingWorker。

干杯