【问题标题】:Progress bar for loading out another JFrame class加载另一个 JFrame 类的进度条
【发布时间】:2013-12-07 16:06:03
【问题描述】:

我有 2 个 JFrame:NewJFrameNewJFrame1NewJFrame 有一个进度条和一个按钮。该按钮用于调用NewJFrame1。单击按钮时,它应该触发进度条运行,直到弹出NewJFrame1。但是,我如何利用 swing worker 并让进度一直运行到 NewJFrame1 实际完全加载其所有组件?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    SwingUtilities.invokeLater(new Runnable() {
        int i = 0;
        public void run() {
           jProgressBar1.setValue(i++);
           new NewJFrame1().setVisible(true);
        }
    });
} 

【问题讨论】:

标签: java swing progress-bar listener


【解决方案1】:

让您的top-level container 有一个加载其内容的SwingWorker,如here 所示,以及一个PropertyChangeListener,如here 所示。当doInBackground() 调用setProgress() 时,监听器将看到该事件。

附录:我们如何知道 GUI 完全加载还剩多少时间? …在示例中,进度条以随机数作为模拟延迟运行

正确;模拟延迟代表加载的粒度。显示加载的总字节数的比例是理想的,但您可能必须适应更粗略的频率。请注意,模型可以在后台构建,任何组件都在监听之前。 GUI 组件应仅在 EDT 上构建和操作,可能在 worker 的 process() 实现中。

【讨论】:

  • 我们如何知道 GUI 完全加载还剩多少时间?就我从网络示例中进行的研究而言,进度条以随机数作为模拟延迟运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2018-08-17
  • 2012-09-04
相关资源
最近更新 更多