天天看点

Java.Dialog

//TestDialog.java

package myprojects.testdialog;

import java.awt.*;

import java.awt.event.*;

class TestDialog extends Frame {

private TextField tf=new TextField(10);

public TestDialog() {

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

Button b1=new Button("打开模态对话框");

Button b2=new Button("打开非模态对话框");

this.add(tf,"North");

this.add(b1,"Center");

this.add(b2,"East");

//add.(tf,"North");

//add.(b1,"Center");

//add.(b2,"East");

b1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ //经常出现的错误,把参数ActionEvent e 写成 ActionListener e

MyDialog dlg=new MyDialog(TestDialog.this,"modal Dialog",true); //注意这里的TestDialog.this

dlg.setInfo(tf.getText());

dlg.setVisible(true);//模态对话框未被关闭前,主程序是不会往下执行的

//------------------------------

tf.setText(dlg.getInfo());

}

});

b2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

MyDialog dlg=new MyDialog(TestDialog.this,"modal Dialog",false); //注意这里的TestDialog.this

dlg.setInfo(tf.getText());

dlg.setVisible(true);//

//tf.setText(dlg.setInfo());

}

});

}

public void setInfo(String strInfo){

tf.setText(strInfo);

}

public static void main(String args[]) {

System.out.println("Starting TestDialog...");

TestDialog mainFrame = new TestDialog();

mainFrame.setSize(400, 400);

mainFrame.setTitle("TestDialog");

mainFrame.setVisible(true);

}

}

//MyDialog.java

package myprojects.testdialog;

import java.awt.Dialog;

import java.awt.*;

import java.awt.event.*;

public class MyDialog extends Dialog {

private TextField tf=new TextField(10);

private String strInfo=null;

public MyDialog(Frame owner,String title,boolean modal){

super(owner,title,modal);

setBounds(0,0,200,150);

Button b1=new Button("应用");

Button b2=new Button("确定");

add(tf,"North");

add(b1,"Center");

add(b2,"East");

if(this.isModal()==true){

b1.setEnabled(false);

}

b1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

((TestDialog)MyDialog.this.getOwner()).setInfo(tf.getText()); //注意MyDialog.this.getOwner()可以省略MyDialog.this.,程序在运行过程中如果在当前内部类对象中找不到该方法,会自动添加MyDialog.this.前缀去查找!

}

});

b2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(isModal()==true){

strInfo=new String(tf.getText());

}

else{

((TestDialog)getOwner()).setInfo(tf.getText()); //注意这里getOwner()前面省略了MyDialog.this.

}

dispose();

}

});

}

public String getInfo(){

return strInfo;

}

public void setInfo(String strInfo){

tf.setText(strInfo);

}

}