回 帖 发 新 帖 刷新版面

主题:[讨论]关于一个awt程序添加组件的问题

程序如下:
import java.awt.*;
import java.awt.event.*;
class My extends Button implements ActionListener{
    String name;
    TextField text;
    Container con;
    My(String s,Container con){
        super(s);
        this.con=con;\\这一句有什么用?
        text=new TextField(8);
        text.addActionListener(this);
        this.addActionListener(this);
        con.add(text);
        con.add(this);
    }
    public void actionPerformed(ActionEvent e){
        name=text.getText();
        this.setLabel(name);
        con.validate();
    }
}
class Win extends Frame{
    My button;
    Win(){
        setLayout(new FlowLayout());
        button=new My("确定",this);\\为什么此处不加这句程序依然正确?
        setBounds(100,200,300,400);
        
        setVisible(true);
        validate();
    }
}
public class Example6{
    public static void main(String df[]){
        Win win=new Win();
    }
}
说明:我自己已经调试过了,程序中的win类中若不要:add(button);这句依然正确,这是为什么呀;还有My类中"this.con=con;"有什么用啊?
谢谢解答;

回复列表 (共1个回复)

沙发

button=new My("确定",this);
这句的作用是将My这个类里面定义的一些组建添加到窗口上,如果不要这句程序没有语法错误,但是运行时窗口上什么也没有。
this.con=con;
这句是用构造函数传进来的一个容器来创建这个类的一个成员变量con,这个成员变量的作用是将这个程序里的一个单行文本和一个按钮加在上面,在这个程序里这个从构造函数传进来的容器就是这个窗口

我来回复

您尚未登录,请登录后再回复。点此登录或注册