一个有菜单栏的窗口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();  
           }  
}

解决方案 »

  1.   

    例如在主窗体为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 没办法.现在基本不用那个了
      

  2.   

    sorry 
    上面的程序 最后一个"}" 的上面在加一个"});"
    由于没工具,不能帮你调试.
    希望你能搞清楚思路
      

  3.   

    用这个控件JDialog或定义一个类继承它
    JDialog实例化时要传入3个参数JFrame myFrame,String title,boolean modal
    第1个参数为主窗体,第2 为弹出窗口的标题,第3 参数值为true时弹出窗口就是 模式窗口了(即主窗体不可操作了)