首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

awt中Frame的有关问题,怎样设置弹出窗口与父窗口的关系

2011-12-12 
awt中Frame的问题,怎样设置弹出窗口与父窗口的关系一个有菜单栏的窗口A继承了Frame,点击菜单栏弹出另外一

awt中Frame的问题,怎样设置弹出窗口与父窗口的关系
一个有菜单栏的窗口A继承了Frame,点击菜单栏弹出另外一个窗口B,    
怎样将其设置为点击A上的菜单栏,弹出窗口B后,A窗口不能在点击,只有关闭B后才能在点击    
用delphi是有个show和showModal方法,在java中怎样设置

FrameA    
 
import     java.awt.*;    
import     java.awt.event.*;    
public     class     FrameA     extends     Frame     implements     ActionListener{    
                      Button     ButtonOk     =new     Button     (     "ok     ");    
                      public     FrameA(){    
                                              super     (     "111     ");    
                                              setLayout(null);    
                                              setSize(100,200);    
                                              ButtonOk.setBounds(100,100,35,50);    
                                              ButtonOk.addActionListener(this);    
                                              add(ButtonOk);    
                                              setVisible(true);    
                                              validate();    
                      }    
                      public     static     void     main(String[]     args){    
                                              FrameA     fr=new     FrameA();    
                      }    
                      public     void     actionPerformed(ActionEvent     e){    
                                                                      FrameB     b=new     FrameB();                            


                      }    
}    
 
 
FrameB    
 
import     java.awt.*;    
public     class     FrameB     extends     Frame     {    
                      public     FrameB(){    
                                              super     (     "BBB     ");    
                                              setSize(100,200);    
                                              setLayout(null);    
                                              setVisible(true);    
                                              validate();    
                      }    
}    

前面发了个贴,得到了弹出B后A不能点,但是问题又出来了,当关闭了B后,A仍然不能点击

FrameA    
 
import     java.awt.*;    
import     java.awt.event.*;    
public     class     FrameA     extends     Frame     implements     ActionListener{    
                      Button     ButtonOk     =new     Button     (     "ok     ");    
                      public     FrameA(){    
                                              super     (     "111     ");    
                                              setLayout(null);    
                                              setSize(100,200);    
                                              ButtonOk.setBounds(100,100,35,50);    
                                              ButtonOk.addActionListener(this);    
                                              add(ButtonOk);    


                                              setVisible(true);    
                                              validate();    
                      }    
                      public     static     void     main(String[]     args){    
                                              FrameA     fr=new     FrameA();    
                      }    
                      public     void     actionPerformed(ActionEvent     e){    
                                                                      FrameB     b=new     FrameB();    
                                                                                                          this.setEnabled(false);/////////////加上这行就可以了                            
                      }    
}    
 
 
FrameB    
 
import     java.awt.*;    
public     class     FrameB     extends     Frame     {    
                      public     FrameB(){    
                                              super     (     "BBB     ");    
                                              setSize(100,200);    
                                              setLayout(null);    
                                              setVisible(true);    
                                              validate();    
                      }    


}

[解决办法]
例如在主窗体为A类,弹出窗体为B类
A类 中定义一个B 类的对象.
B类 中定义一个A 类的对象.
B 类的构造函数设计为:
Class B extends Frame
{
B(A a)
{ this.a = a;
addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
a.setEnabled(true);

}
}
);



}

}


Class A extends Frame
{
B b;
Button b = new Button( "fd ");
A()
{
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
b=new B(A.this);
b.setVisible(true);
A.thisa.setEnabled(false);

}



}
就是这种框架
这是个基本思路,由于好久没写,我也不晓得类,和方法名写错没.可以到jdk文档核实下
主要是windowActionListener 和后面的方法window后面带不带s 我忘了.
hehe 没办法.现在基本不用那个了
[解决办法]
用这个控件JDialog或定义一个类继承它
JDialog实例化时要传入3个参数JFrame myFrame,String title,boolean modal
第1个参数为主窗体,第2 为弹出窗口的标题,第3 参数值为true时弹出窗口就是 模式窗口了(即主窗体不可操作了)

热点排行
Bad Request.