对于这两个类我有点疑问?有两处不知道为什么要这么写,请帮忙指点!import java.awt.event.*;
import java.awt.*;class TestDialog extends Frame
{
private TextField tf=new TextField(10);
public TestDialog()
{
Button b1=new Button("打开模态对话框");
Button b2=new Button("打开非模态对话框");
add(tf,"North");
add(b1,"West");
add(b2,"East");
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
MyDialog md=new MyDialog(TestDialog.this,"模态对话框",true);
md.setInfo(tf.getText());
md.setVisible(true);
tf.setText(md.getInfo());
}
});
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
MyDialog md=new MyDialog(TestDialog.this,"非模态对话框",false);
md.setInfo(tf.getText());
md.setVisible(true);
// tf.setText(md.getInfo());//为什么写了这段代码点击Button2时Frame不显示TextField//为什么和button1不一样呢,这段代码不用写,写了倒是错误!//非模态对话框为什么不用写这句话?//非模态对话框不写这句话主面板倒能显示出文字,为什么写上这句话主面板上的TextField就显示不出文字来?
}
});
//下面这段代码怎么写能将主面板点击关闭后关闭?

  addWindowListener(new WindowAdapter()
{
public void WindowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});

}
public void setInfo(String strInfo)
{
tf.setText(strInfo);
}
public static void main(String []args)
{
TestDialog td=new TestDialog();
td.setSize(400,400);
td.setVisible(true);
}
}import java.awt.event.*;
import java.awt.*;
import java.awt.Dialog;public class MyDialog extends Dialog
{
private TextField tf=new TextField(10);
private String strInfo=null;
public MyDialog(Frame f,String str,boolean bo)
{
super(f,str,bo);
setBounds(0,0,200,150);
Button b1=new Button("应用");
Button b2=new Button("确定");
add(tf,"North");
add(b1,"West");
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());//这段代码是什么意思?怎么和常规写得不一样呢?请仔细解释一下
}
});
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(isModal()==true)
{
strInfo=new String(tf.getText());
}
else
{
((TestDialog)MyDialog.this.getOwner()).setInfo(tf.getText());
}
dispose();
}
});
}
public String getInfo()
{
return strInfo;
}
public void setInfo(String strInfo)
{
tf.setText(strInfo);
}
}