//直接复制即可演示
//主窗口
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
}
}