在没有实例化的情况下声明类的实例&初始化 - 澄清

时间:2015-06-21 17:45:38

标签: java swing class object jpanel

我正在开发与Java Swing兼容的课程,但我遇到了障碍。在这个项目中,我们正在设置不同组件的大小,但是,教师专门输入了一行我不太了解的代码,我只是在寻找这行代码概念的解释。

基本上,我知道如何创建类的对象。让我们说我们想要一个新的扫描仪类。为Scanner类创建对象很简单,看起来如下所示:

public class ScannerProgram {

import java.util.Scanner; //Imports Scanner Class

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
// ^ Creates object of the Scanner Type, and calls the "Scanner" constructor.
}

}

在我正在观看的其中一个课程中,教师正在使用扩展JPanel的用户创建的类创建自定义组件,我们希望获得首选大小。教练这样做:

import java.awt.Dimension; //Imports Dimension class
import javax.swing.JPanel; //Imports JPanel class


public class FormPanel extends JPanel {

    public FormPanel() {

        Dimension dim = getPreferredSize(); //Question 1
        System.out.println(dim); //Prints results
        //The result is java.awt.Dimension[width=10,height=10]


    }
}

问题1:我想知道这行代码到底在做什么。我知道你正在声明一个变量" Dimension"类型,但之后它变得令人困惑,因为你没有调用构造函数。在这种情况下,变量被设置为等于" getPreferredSize(),"而且我不太确定它在做什么。它是否从Dimension类调用特定方法?这是我的猜测,但实际上我根本不确定。感谢任何愿意阐明这一点的人。

此外,如果需要,请随时更改标题。

1 个答案:

答案 0 :(得分:4)

getPreferredSize()JPanel(或JPanel的超类)返回Dimension实例的方法。在getPreferredSize()构造函数构造的实例上调用FormPanel