Fix: TaskWindow causes NullPointerException.

This commit is contained in:
huanghongxun 2015-09-07 13:00:54 +08:00
parent 6e003a7364
commit 01526546b1
3 changed files with 12 additions and 3 deletions

View File

@ -117,6 +117,7 @@ public final class Launcher {
println("*** Launching Game ***"); println("*** Launching Game ***");
int flag = 0;
try { try {
minecraftMain.invoke(null, new Object[]{cmds}); minecraftMain.invoke(null, new Object[]{cmds});
} catch (Throwable throwable) { } catch (Throwable throwable) {
@ -130,9 +131,11 @@ public final class Launcher {
LogWindow.instance.log(trace); LogWindow.instance.log(trace);
LogWindow.instance.setExit(TrueFunction.instance); LogWindow.instance.setExit(TrueFunction.instance);
LogWindow.instance.setVisible(true); LogWindow.instance.setVisible(true);
flag = 1;
} }
println("*** Game Exited ***"); println("*** Game Exited ***");
System.exit(1); System.exit(flag);
} }
} }

View File

@ -224,6 +224,7 @@ public class TaskWindow extends javax.swing.JDialog
task.setProgressProviderListener(this); task.setProgressProviderListener(this);
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
if(taskList == null) return;
tasks.add(task); tasks.add(task);
progresses.add(0); progresses.add(0);
SwingUtils.appendLast(lstDownload, task.getInfo(), "0%"); SwingUtils.appendLast(lstDownload, task.getInfo(), "0%");
@ -238,6 +239,7 @@ public class TaskWindow extends javax.swing.JDialog
@Override @Override
public void onDone(Task task) { public void onDone(Task task) {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
if(taskList == null) return;
pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setMaximum(taskList.taskCount());
pgsTotal.setValue(pgsTotal.getValue() + 1); pgsTotal.setValue(pgsTotal.getValue() + 1);
int idx = tasks.indexOf(task); int idx = tasks.indexOf(task);
@ -251,6 +253,7 @@ public class TaskWindow extends javax.swing.JDialog
@Override @Override
public void onFailed(Task task) { public void onFailed(Task task) {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
if(taskList == null) return;
failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage())); failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : task.getFailReason().getLocalizedMessage()));
pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setMaximum(taskList.taskCount());
pgsTotal.setValue(pgsTotal.getValue() + 1); pgsTotal.setValue(pgsTotal.getValue() + 1);
@ -270,6 +273,7 @@ public class TaskWindow extends javax.swing.JDialog
@Override @Override
public void setStatus(Task task, String sta) { public void setStatus(Task task, String sta) {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
if(taskList == null) return;
int idx = tasks.indexOf(task); int idx = tasks.indexOf(task);
if (idx == -1) return; if (idx == -1) return;
SwingUtils.setValueAt(lstDownload, task.getInfo() + ": " + sta, idx, 0); SwingUtils.setValueAt(lstDownload, task.getInfo() + ": " + sta, idx, 0);

View File

@ -20,6 +20,7 @@ import java.awt.Font;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.text.ParseException; import java.text.ParseException;
import javax.swing.SwingUtilities;
import javax.swing.UIManager; import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException; import javax.swing.UnsupportedLookAndFeelException;
import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.HMCLog;
@ -29,6 +30,7 @@ import org.jackhuang.hellominecraft.utils.UpdateChecker;
import org.jackhuang.hellominecraft.svrmgr.views.MainWindow; import org.jackhuang.hellominecraft.svrmgr.views.MainWindow;
import org.jackhuang.hellominecraft.utils.VersionNumber; import org.jackhuang.hellominecraft.utils.VersionNumber;
import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel;
import org.jackhuang.hellominecraft.utils.system.MessageBox;
/** /**
* *
@ -53,8 +55,8 @@ public class Main {
} catch (ParseException | UnsupportedLookAndFeelException ex) { } catch (ParseException | UnsupportedLookAndFeelException ex) {
HMCLog.warn("Failed to set look and feel", ex); HMCLog.warn("Failed to set look and feel", ex);
} }
new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", SettingsManager.settings.checkUpdate, () -> { new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", () -> {
SettingsManager.settings.checkUpdate = false; SwingUtilities.invokeLater(() -> MessageBox.Show("发现更新!"));
}).start(); }).start();
new MainWindow().setVisible(true); new MainWindow().setVisible(true);
} catch (Throwable t) { } catch (Throwable t) {