这是我启动应用程序的主要方法。 JFrame成功加载。当我添加 WHILE-Loop部分进行一些后台工作时,我处理一些数据以显示在我的JFrame上,我的JFrame没有正确加载(见下图)。
public static void main(String[] args) throws IOException {
if (Config.checkIfConfigExists() == true) {
/*
* Starten der Anwendung
*/
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main window = new Main();
window.frmServicenowHelper.invalidate();
window.frmServicenowHelper.validate();
window.frmServicenowHelper.repaint();
window.frmServicenowHelper.setVisible(true);
while (true) {
// the part that makes it error
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
Notifications.alertMSGConfig("Config not found. Create one?");
}
}
正如您所见,JFrame冻结并显示其背景。
我发现它与Threads
和正确的处理有关(我想我在错误的地方使用了某些东西),但我自己无法解决这个问题。
背景知识:
我想从URL获取一个JSON-String(这个方法正在工作 - 我想调用&在帧上显示结果)每5分钟一次(因此是while循环)。
修改
我尝试过这样可以正确加载框架但是使循环(我需要)无用:
while (true) {
Main window = new Main();
window.frmServicenowHelper.invalidate();
window.frmServicenowHelper.validate();
window.frmServicenowHelper.repaint();
window.frmServicenowHelper.setVisible(true);
break;
}
答案 0 :(得分:0)
我找到了解决方案:
我只是使用:
创建了一个新的Thread(后台处理)public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
runYourBackgroundTaskHere();
}
};
new Thread(r).start();
//this line will execute immediately, not waiting for your task to complete
}