想完成的业务是一个窗体中有一个按钮,点击后打开另一个窗口,同时冻结本窗口,另一个窗口关闭时解冻本窗口。我的思路是:JFrame A中有个按钮,点击后打开JFrame B,同时设置A的setEnabled为false,那么在关闭B时,如何才能将A的setEnabled为false设为true呢?

解决方案 »

  1.   

    哪有这么麻烦
    你的B不要用JFrame用JDialog就好了啊,用模态模式打开
    JFrame A = new JFrame();
    JDialog B = new JDialog(A, true);
      

  2.   

    <Swing Hacks> Hack 58. Block a Window Without a Modal Dialog
      

  3.   

    设置一个boolean flag = true;
    加一个if判断
    if(flag){
        点击A
         flag = false;
       }else{
        点击B
        flag = true;
     }
        
    当点击了A之后,在打开B的同时将flag赋值为false;
    当点击了B中的按钮,就将flag赋值为true;
    同时,setEnabled()中传入flag
      

  4.   

    支持用JDialog,非要用JFrame的话可以在打开另一个窗口时把本窗口设为不可见的,关闭窗口时再设为可见也行
      

  5.   

    JFrame A = new JFrame();
    JDialog B = new JDialog(A, true);Dialog本身就有冻结父窗口的功能
      

  6.   

    有Dialog模态,为什么还要用JFrame呢
      

  7.   

    谢谢大家热心的帮忙解答,我的问题已经解决。
    我用了下JDialog模态,果然很简单,开始不知道有这现成的东西,已经实现好了这写功能。
    总结下,就是把extends Jframe 改成extends JDialog,在B中填上
    this.setModalityType(DEFAULT_MODALITY_TYPE);即可实现模态
    但是这条语句要放在 
    pack();
    setVisible(true);之前。