import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;class test extends Frame implements ActionListener
{
Button b = new Button("click");
JDialog dialog = new JDialog();
Button click = new Button("click");
TextField tf = new TextField(10);

public void display()
{
this.add(b);
b.addActionListener(this);
setSize(200,200);
setVisible(true);
}

public static void main(String str[])
{
test t = new test();
t.display();
} public void actionPerformed(ActionEvent e) 
{
if(e.getSource()==b)
{
click.addActionListener(this);
dialog.getContentPane().add(click,BorderLayout.NORTH);
dialog.getContentPane().add(tf);
dialog.show();
}
else
{
System.out.println (tf.getText());
}
}
}能打出来也能返回到主窗体;

解决方案 »

  1.   

    可以在主截面中设置一个static方法
    或者,在JDialog的处理按钮事件中,修改
    主截面中对应的值就可以了,在主截面的
    构造函数上要注意一下,最好有两个构造函数
    一个对界面控件的初始化,一个为空只是为了
    处理这个参数的传递。
      

  2.   

    不是static方法,是static 变量。
      

  3.   

    在主窗体中设一个STATIC变量,在这里返回值就行
      

  4.   

    自已写个函数返回去。public void f()
    {
      return 文本.getText()
    }
      

  5.   

    我自己原来写过一个自动编码工具,当时我就是用jdialog来返回其中设置的值,也是按照楼上的意思,在弹出对话框的类中写了一个返回字符串的方法,主线程通过调用该方法来取值
      

  6.   

    用面向对象的方法来解决,在对话框中定义一个getValue的函数,将文本框中的数据返回来!!
      

  7.   

    public String getValue ()
    {
      return txtName.getText ()
    }
      

  8.   

    有那么复杂吗?JS一句话不就可以了?
    window.parent.document.all……,
    这不就是父窗体的东西了吗?
    难道这样实现不了?