import java.awt.Button; import java.awt.Dialog; import java.awt.Frame; import java.awt.TextField; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class StuDialog extends Frame{ private static final long serialVersionUID = 1L; boolean inited = false; private TextField field = new TextField(10); Button button1 = new Button("打开模态对话框"); Button button2 = new Button("打开非模态对话框"); @Override public void setVisible(boolean b) { if(inited == false) { add(field,"North"); add(button1,"East"); add(button2,"Center"); setSize(300, 300); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } }); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new Dialog(StuDialog.this,true){ private static final long serialVersionUID = 1L; TextField field = new TextField(10); Button button = new Button("确定"); boolean inited = false; @Override public void setVisible(boolean arg0) { // TODO Auto-generated method stub if(inited == false) { add(field,"North"); add(button,"Center"); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } }); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { StuDialog.this.field.setText(field.getText()); ((Window) button.getParent()).dispose(); } }); setSize(100,100); inited = true; } super.setVisible(arg0); } }.setVisible(true); } }); button2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new Dialog(StuDialog.this,false){ private static final long serialVersionUID = 1L; TextField field = new TextField(10); Button button1 = new Button("确定"); Button button2 = new Button("应用"); boolean inited = false; @Override public void setVisible(boolean arg0) { // TODO Auto-generated method stub if(inited == false) { add(field,"North"); add(button1,"East"); add(button2,"Center"); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } }); button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { StuDialog.this.field.setText(field.getText()); ((Window)(button1.getParent())).dispose(); } }); button2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { StuDialog.this.field.setText(field.getText()); } }); setSize(100, 100); inited = true; } super.setVisible(arg0); } }.setVisible(true); } }); inited = true; } super.setVisible(b); } public static void main(String[] args){ StuDialog instance = new StuDialog(); instance.setVisible(true); } }