Java 停止SwingWorker中JProgressBar的不确定模式
一旦我的Java 停止SwingWorker中JProgressBar的不确定模式,java,swing,progress-bar,swingworker,Java,Swing,Progress Bar,Swingworker,一旦我的doInBackground(SwingWorker方法)返回null(意思是当我的任务完成时),我想停止进度条的不确定模式。这是我在按钮内的代码;当我运行代码时,我得到一个错误。代码如下: private void StartButtonMouseClicked(java.awt.event.MouseEvent evt) { final Main f22 = new Main(); initiali
doInBackground
(SwingWorker方法)返回null
(意思是当我的任务完成时),我想停止进度条的不确定模式。这是我在按钮内的代码;当我运行代码时,我得到一个错误。代码如下:
private void StartButtonMouseClicked(java.awt.event.MouseEvent evt) {
final Main f22 = new Main();
initializer();
f22.getfile(FileName, 0);
f22.execute();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jProgressBar1.setIndeterminate(true);
try {
if (f22.doInBackground() == null) {
jProgressBar1.setIndeterminate(false);
}
} catch (IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
以下是我得到的错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6e1b0750, pid=4988, tid=5464
#
# JRE version: 7.0-b141
# Java VM: Java HotSpot(TM) Client VM (21.0-b11 mixed mode, sharing windows-x86
# Problematic frame:
# V [jvm.dll+0xa0750]
#
# Failed to write core dump. Minidumps are not enabled by default on client
versions of Windows
#
#
#Java运行时环境检测到一个致命错误:
#
#pc=0x6e1b0750、pid=4988、tid=5464时的异常访问(0xc0000005)
#
#JRE版本:7.0-b141
#Java虚拟机:Java热点(TM)客户端虚拟机(21.0-b11混合模式,共享windows-x86
#有问题的框架:
#V[jvm.dll+0xa0750]
#
#未能写入核心转储。默认情况下,客户端上未启用小型转储
Windows版本
#
您似乎错误地使用了SwingWorker。您不应该调用
doInBackground()
直接执行,尤其是在事件分派线程中不正确——这与使用SwingWorker的全部原因背道而驰——而是在SW上调用execute。向SwingWorker添加PropertyChangeListener并基于此更改行为
e、 g
另见。
final Main f22 = new Main();
initializer();
f22.getfile(FileName, 0);
f22.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent pcEvt) {
if (pcEvt.getNewValue().equals(SwingWorker.StateValue.DONE)) {
// do your stuff here
}
}
});
f22.execute();