f extends Frame{
t = new TextArea();
f.add("Center",t);
b = new Button();
d = new Dialog(this,title,modal)
}
然后在dialog的anniu 事件中控制t就可以
t = new TextArea();
f.add("Center",t);
b = new Button();
d = new Dialog(this,title,modal)
}
然后在dialog的anniu 事件中控制t就可以
各位看看如何修改一下代码就行,
现在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){
//要加入的动作
}
});
}
}
你只要保证在Dialog内可以访问到Frame(或你要修改的其他组件)就可以。你可以把你要修改的对象句柄都保存起来,最简单的办法是作为全局变量。
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
}
});
}
}
用的使Frame1.this而不是this?
public void actionPerformed(ActionEvent e){
Frame frame2=new Frame2(Frame1.this);//modified by yuanmeng163
frame2.show(); }
});
在构造函数里有frame = f,最后frame.setTextEditable(true);//added
很像C语言的指针作为虚参,而java又说,不用指针。
反正思路就是把原来的窗口的reference 传给生成的窗口。