示例来源:100个Java经典例子
示例10:
import javax.swing.*;
import java.awt.*;
public class Example10 extends JFrame {
public Example10(String sTitle, int iWidth, int iHeight ) {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setTitle(sTitle);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(iWidth, iHeight);
int w = getSize().width;
int h = getSize().height;
System.out.println("窗体宽:" + w + ",窗体长:" + h);
int x = (dim.width - w)/2;
int y = (dim.height - h)/2;
setLocation(x, y);
setVisible(true);
}
public static void main(String args[]) {
JFrame.setDefaultLookAndFeelDecorated(true);
new Example10("mian Frame Demo", 400, 300);
}
}
Class JFrame的结构:public class JFrame extends Frame implements WindowsConstants, Accessible, RootPaneContainer。
Class Dimension 的结构:public class Dimension extends Dimension2D implements Serializable。本类封装了单个对象中一个组件的长度和宽度。
一个让我困惑的点在于:setTitle()和setSize()方法都没有对象引用而直接调用的?
首先该类是JFrame的子类,由JFrame的继承关系可以知道setTitle()方法是类Frame中的方法,而setSize()是类Component中的方法,所以本类都可以直接调用。其次在一个对象里面,方法之间是可以互相调用的,这里是构造方法调用普通方法。(我试了一下在方法前面加上this.)
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
这句话是获取屏幕尺寸对象,后面的完美居中需要调用该数据。