java Swing 新开窗口,原窗口不可编辑

//直接复制即可演示

//主窗口


import java.awt.Dialog.ModalExclusionType;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JFrame;


public class MySwing extends JFrame implements ActionListener {
   JButton jb = new JButton();


   public MySwing() {
       this.setTitle("MySwing");
       this.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
       this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       jb.setText("确定");
       this.add(jb);
       this.setBounds(200, 300, 250, 300);
       
       this.setVisible(true);
       //弹出新窗口
       jb.addActionListener(this); 
   }


   //jb 事件绑定
   public void actionPerformed(ActionEvent e) {
  //设置禁用
  this.setEnabled(false);
  this.setModalExclusionType(ModalExclusionType.NO_EXCLUDE);
  
  //创建新的窗口
  MySwing2 frame = new MySwing2(this);
       frame.setVisible(true);
   }


   public static void main(String args[]) {
  MySwing s = new MySwing();
   }

}



//子窗口


import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class MySwing2 extends JFrame implements ActionListener {
MySwing ms;


public MySwing2( final MySwing ms ) {
       setTitle("新窗口");
       setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
       setAlwaysOnTop(true);
       setBounds(
               new Rectangle(
                       (int) ms.getBounds().getX() + 200,
                       (int) ms.getBounds().getY() + 20, 
                       (int) ms.getBounds().getWidth(), 
                       (int) ms.getBounds().getHeight()
               )
           );
       JLabel jl = new JLabel(); 
       getContentPane().add(jl);
       jl.setText("这是新窗口");
       
       
       JButton button = new JButton("回调");
       getContentPane().add(button);
       button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
//调用原窗口组件
ms.jb.setText("haha");

}
});
       
       addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
      //设置启用
      ms.setEnabled(true);
      System.out.println(">>>>>close 2<<<<<");
      }
      });
   }


public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}




   
}


你可能感兴趣的:(JAVA-Swing)