Re: [J2SE] Jdialog的的dispose
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):