我正在创建一个使用JLabel的progressBar。问题是当我将这个标签添加到我的框架并执行一些其他任务时,我的JFrame冻结。有没有像调用和等待swing来完成绘图的方法?如何强制java绘制摆动标签?
private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {
JLabel loadingBar = new JLabel("test");
myFrame.add(loadingBar);
doSomeOtherTasks();
}
能否请您展现出[MCVE]仅此代码不应冻结 –
当您的UI冻结时,您在https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html – GhostCat
上做了错误的事情。这不是强制的问题Java通过在EDT上执行长时间运行的任务来更新标签,使其不会阻塞Event Dispatch Thread。换句话说:不要阻塞EDT(Event Dispatch Thread)。发生这种情况时,GUI将“冻结”。有关详细信息和修补程序,请参见[Swing中的并发](https://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。 –