java jframe 运行_java – 使用JProgressBar运行JFrame
你有一個經典的并發和Swing問題.您的問題是您在主Swing線程,EDT或事件調度線程上執行長時間運行的任務,這將鎖定線程,直到該過程完成,從而阻止它執行其任務,包括與用戶交互和繪制GUI圖形.
解決方案是在后臺線程中執行長時間運行的任務,例如SwingWorker對象給出的.然后,您可以通過SwingWorker的發布/進程對更新進度條(如果是決定因素).有關這方面的更多信息,請閱讀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);
}
此外,如果從另一個Swing組件顯示它,那么您應該顯示模態JDialog而不是JFrame.這就是我在SwingWorker代碼之后在窗口上調用setVisible(true)的原因 – 這樣如果它是一個模態對話框,它就不會阻止SwingWorker被執行.
總結
以上是生活随笔為你收集整理的java jframe 运行_java – 使用JProgressBar运行JFrame的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java search 不能使用方法_e
- 下一篇: dbartisan mysql_Syba