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

}




   
}


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值