【发布时间】:2013-04-11 08:05:46
【问题描述】:
我在创建设置为不确定的JProgressBar 时遇到问题。
以下代码是我对JProgressBar 的实现,是从另一个类调用/构造的:
public class Progress implements Runnable
{
private JFrame frameProgress;
private JProgressBar progressBar;
public Progress(String title, String message)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
GlobalVariables.LOGGING_logger.error("Error instatiating progress bar.",
e);
}
UIManager.put("ProgressBar.selectionForeground", Color.black);
UIManager.put("ProgressBar.selectionBackground", Color.black);
this.frameProgress = new JFrame(title);
this.frameProgress.setIconImage(GlobalVariables.GUI_icon.getImage());
this.frameProgress.setSize(300, 60);
this.frameProgress.setLocation(16, 16);
this.progressBar = new JProgressBar();
this.progressBar.setStringPainted(true);
this.progressBar.setString(message);
this.progressBar.setIndeterminate(true);
this.frameProgress.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frameProgress.add(this.progressBar);
this.frameProgress.setResizable(false);
this.frameProgress.setVisible(true);
}
public void start()
{
new Thread(this).start();
}
public void close()
{
this.frameProgress.dispose();
this.frameProgress = null;
this.progressBar = null;
}
@Override
public void run()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
// do nothing, because progress bar is indeterminate
}
});
}
}
这个JProgressBar的调用者是如下代码sn-p:
Progress p = new Progress("bla", "blub");
p.start();
boolean successfull = xmlWriter.writeCommonSettingsFromGUI(this);
p.close();
现在我希望,当xmlWriter.writeCommonSettingsFromGUI(this); 正在做某事时,JProgressBar 会显示给用户,并且在算法运行时正在工作。
我怎样才能做到这一点?我不太了解线程和在许多其他论坛中搜索,但我没有找到任何问题的答案。
请帮助我,提前谢谢你;)
编辑: Progress JFrame 打开时没有任何内容,算法正在运行。
【问题讨论】:
-
您能描述一下您当前的代码有什么问题吗?
-
进度条不显示,我得到一个异常:线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException at de.Progress$1.run(Progress.java:63 ) 在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727) 在 java.awt.EventQueue.access$200(EventQueue.java:103)) ...
-
好的...没有更多错误...但是:如果我启动线程,它会打开 Progress JFrame,但其中没有内容(没有 JProgressBar)...跨度>
-
不要将重要的细节添加为 cmets。 Edit your question 并添加信息。请包含一个完整的堆栈跟踪。
-
没有错误了...在此代码的旧版本中...
标签: java swing nullpointerexception jprogressbar swingutilities