Java gui和构造函数

时间:2015-03-27 08:35:15

标签: java user-interface constructor awt frame

我对java和gui有疑问,这个问题一直困扰着我。我已经发布了一个小代码,我需要你看看它的构造函数部分。

import java.awt.*;  

class First extends Frame {  

    First(){
        Button b=new Button("click me");  
        b.setBounds(30,100,80,30);// setting button position
        add(b);//adding button into frame  
        setSize(300,300);//frame size 300 width and 300 height  
        setLayout(null);//no layout manager  
        setVisible(true);//now frame will be visible, by default not visible  
    }  

    public static void main(String args[]){  
        First f=new First();  
    }
}

据我所知,在main方法中,我们创建了一个类" First"的对象。我也明白,当创建一个新对象时,会调用其类的构造函数进行初始化。

我怀疑的是,我们如何在没有点运算符的情况下使用setSize,setLayout,setVisible函数?如果这些函数要修改对象,那么创建它会触发构造函数调用,我们是不是应该使用this指针?难道不是我们一直这样做吗?但我在互联网上遇到过类似的代码,最近一直很困惑。任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:1)

setSizesetLayoutsetVisible方法可以直接使用,因为它们是Frame类的成员,而您的First类是Frame的子类。

从这个意义上讲,你正在工作"内部" Frame对象可以直接调用其成员。

您只需要从对象外部限定方法调用,以便Java可以告诉您正在调用哪个对象。

可以使用this明确调用这些方法,即     this.setSize(),但假定为this,因此您可以编写更简洁的代码。并非所有语言都这样做 - 例如在Python中,您总是需要指定this(在Python中称为self

答案 1 :(得分:0)

您发布的代码包含对setSize(),setLayout()等方法的引用,这些方法继承自Frame类,并且始终可用于当前正在执行的对象。

在java中,没有像C或C ++那样的显式指针的概念。但是this关键字引用了当前对象。

因此,使用此关键字是可选的,

setSize(300,300);

this.setSize(300,300);

两者都意味着同一件事。