f extends Frame{
t = new TextArea();
f.add("Center",t);
b = new Button();
d = new Dialog(this,title,modal)
}
然后在dialog的anniu 事件中控制t就可以

解决方案 »

  1.   

    看不懂以上的意思:
    各位看看如何修改一下代码就行,
    现在textField1不可以编辑,
    目标:点击“修改父Frame1的textField1的属性”Button,使得textFeid1可以编辑。
    //Frame1.javaimport java.awt.*;
    import java.awt.event.*;public class Frame1 extends Frame{
    private Button button1;
    private TextField textField1;
    private Panel panel1; public Frame1(){
    setSize(300,300);
    addWindowListener(new WindowAdapter()
     {
     public void windowClosing(WindowEvent e)
     {
     System.exit(0);
     }
     }); button1=new Button("生出子dialog1");
    textField1=new TextField(10);
    textField1.setEditable(false);
    panel1=new Panel(); panel1.add(button1);
    panel1.add(textField1); add(panel1); button1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    Frame frame2=new Frame2();
    frame2.show();

    }
    });
    } public static void main (String[] args){
    Frame frame1=new Frame1();
    frame1.show();
    }
    }class Frame2 extends Frame{
    private Button button2;
    private Panel panel2; public Frame2(){
    setSize(200,200);
    addWindowListener(new WindowAdapter()
     {
     public void windowClosing(WindowEvent e)
     {
     System.exit(0);
     }
     }); button2=new Button("修改父Frame1的textField1的属性");
    panel2=new Panel(); panel2.add(button2);
    add(panel2); button2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    //要加入的动作
    }
    });
    }
    }
      

  2.   

    完全可以。
    你只要保证在Dialog内可以访问到Frame(或你要修改的其他组件)就可以。你可以把你要修改的对象句柄都保存起来,最简单的办法是作为全局变量。
      

  3.   

    import java.awt.*;
    import java.awt.event.*;public class Frame1 extends Frame{
        private Button button1;
        private TextField textField1;
        private Panel panel1;    public Frame1(){
            setSize(300,300);
            addWindowListener(new WindowAdapter()
             {
                 public void windowClosing(WindowEvent e)
                 {
                     System.exit(0);
                 }
             });        button1=new Button("生出子dialog1");
            textField1=new TextField(10);
            textField1.setEditable(false);
            panel1=new Panel();        panel1.add(button1);
            panel1.add(textField1);        add(panel1);        button1.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    Frame frame2=new Frame2(Frame1.this);//modified by yuanmeng163
                    frame2.show();            }
            });
        }
    //*****************added by yuanmeng163**************//
        public void setTextEditable(boolean isEnable) {
            textField1.setEditable(isEnable);
        }
    //**************************************************//
        public static void main (String[] args){
            Frame frame1=new Frame1();
            frame1.show();
        }
    }class Frame2 extends Frame{
        private Button button2;
        private Panel panel2;
        private Frame1 frame;    public Frame2(Frame1 f){//modified
            frame = f;
            setSize(200,200);
            addWindowListener(new WindowAdapter()
             {
                 public void windowClosing(WindowEvent e)
                 {
                     System.exit(0);
                 }
             });        button2=new Button("修改父Frame1的textField1的属性");
            panel2=new Panel();        panel2.add(button2);
            add(panel2);        button2.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    frame.setTextEditable(true);//added 
                }
            });
        }
    }
      

  4.   

    为什么Frame frame2=new Frame2(Frame1.this);//modified by yuanmeng163
    用的使Frame1.this而不是this?
      

  5.   

    因为这条语句是在匿名内部类里,this就不是指Frame1了。button1.addActionListener(new ActionListener(){ //new ActionListener()是个内部类
                public void actionPerformed(ActionEvent e){
                    Frame frame2=new Frame2(Frame1.this);//modified by yuanmeng163
                    frame2.show();            }
            });
      

  6.   

    而且,Frame2中还有个private Frame1 frame的变量,
    在构造函数里有frame = f,最后frame.setTextEditable(true);//added
    很像C语言的指针作为虚参,而java又说,不用指针。
      

  7.   

    JAVA是这种方式叫引用(refrence),只是叫法不同。
      

  8.   

    解决了?
    反正思路就是把原来的窗口的reference 传给生成的窗口。