java jframe 运行_java – 使用JProgressBar运行JFrame
你有一個(gè)經(jīng)典的并發(fā)和Swing問(wèn)題.您的問(wèn)題是您在主Swing線程,EDT或事件調(diào)度線程上執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),這將鎖定線程,直到該過(guò)程完成,從而阻止它執(zhí)行其任務(wù),包括與用戶交互和繪制GUI圖形.
解決方案是在后臺(tái)線程中執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),例如SwingWorker對(duì)象給出的.然后,您可以通過(guò)SwingWorker的發(fā)布/進(jìn)程對(duì)更新進(jìn)度條(如果是決定因素).有關(guān)這方面的更多信息,請(qǐng)閱讀Concurrency in Swing上的這篇文章.
例如.,
public void myMethod() {
final MyProgessBarFrame progFrame = new MyProgessBarFrame();
new SwingWorker() {
protected Void doInBackground() throws Exception {
// do some processing here while the progress bar is running
// .....
return null;
};
// this is called when the SwingWorker's doInBackground finishes
protected void done() {
progFrame.setVisible(false); // hide my progress bar JFrame
};
}.execute();
progFrame.setVisible(true);
}
此外,如果從另一個(gè)Swing組件顯示它,那么您應(yīng)該顯示模態(tài)JDialog而不是JFrame.這就是我在SwingWorker代碼之后在窗口上調(diào)用setVisible(true)的原因 – 這樣如果它是一個(gè)模態(tài)對(duì)話框,它就不會(huì)阻止SwingWorker被執(zhí)行.
總結(jié)
以上是生活随笔為你收集整理的java jframe 运行_java – 使用JProgressBar运行JFrame的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java search 不能使用方法_e
- 下一篇: dbartisan mysql_Syba