作者H45 (!H45)
站内java
标题Re: [J2SE] Jdialog的的dispose
时间Wed Mar 12 12:52:51 2008
※ 引述《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
1F:推 slalala:感谢 我现在实做上还是遇到一些例外 有空在说明一下 03/13 00:51