Re: [J2SE] Jdialog的的dispose

看板java作者 (!H45)時間17年前 (2008/03/12 12:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《misgod (ChihHsiang)》之銘言: : ~原文刪光~ : 我根據你後面給的sample做了一個小demo...實務上這種寫法比較不好 : 不過大概是這樣子概念...modal會把所在的thread block住 : 所以要多開一條thread,參考一下吧 : ============================================= : import javax.swing.JDialog; : import javax.swing.JFrame; : public class MyFrame extends JFrame{ : public MyFrame(){ : setSize(400,400); : setVisible(true); : } : public void runDemo(){ : final JDialog a= new JDialog(this,true); : a.setSize(200,200); : //方便觀看效果 : try { : Thread.sleep(2000); : } catch (InterruptedException e) { : e.printStackTrace(); : } : : new Thread(new Runnable(){ : public void run() { : a.setVisible(true); : } : }).start(); : : //方便觀看效果 : try { : Thread.sleep(3000); : } catch (InterruptedException e) { : e.printStackTrace(); : } : a.dispose(); : } : public static void main(String[] arg){ : new MyFrame().runDemo(); : } : } 這個方法可以動,如果想要反過來讓本執行緒 setVisible(true) 那麼可以這樣寫: import javax.swing.JDialog; import javax.swing.JFrame; public class MyFrame extends JFrame{ public MyFrame(){ setSize(400,400); setVisible(true); } public void runDemo(){ final JDialog a= new JDialog(this,true); a.setSize(200,200); new Thread(new Runnable(){ public void run() { // TODO work work work!! try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } a.dispose(); } }).start(); a.setVisible(true); } public static void main(String[] arg){ new MyFrame().runDemo(); } } 還沒測試,但是編譯有過…… 基本上,這個 runDemo 看起來像是介面控制單元 所以複雜的 Data Mining 應該會寫在另一個 Model 的 Method 裡面 這樣的話,runDemo 會建立一個執行緒來呼叫 Model 的方法,完成這個 Data Mining 此例以 3000 毫秒來模擬這個動作的總耗時,最後才呼叫 a.dispose(). 事情應該會如我預期 (? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.246.224

03/13 00:51, , 1F
感謝 我現在實做上還是遇到一些例外 有空在說明一下
03/13 00:51, 1F
文章代碼(AID): #17rs6aa6 (java)
討論串 (同標題文章)
文章代碼(AID): #17rs6aa6 (java)