写在前面:本篇是对《初识图形用户界面(1)》的补充。
二.窗体属性
JFrame类本身只包含若干个改变窗体外观的方法。当然,利用继承的魔力,大多数处理窗体大小和位置的方法都来自JFrane 的各个超类。其中最重要的有以下方法:
●setLocation方法和setBounds方法用于设置窗体的位置。
●setIconImage 方法用于告诉窗口系统在标题栏、任务切换窗口等位置显示哪个图标。
●setTitle方法用于改变标题栏的文字。
●setResizable 利用一个boolean 值确定是否允许用户改变窗体的大小。
正像API注解中所说的,需要在Component 类(是所有GUI对象的祖先)和Windod类(Frane类的超类)中寻找调整窗体大小和改变窗体形状的方法。例如, Component类中的setLocation方法是一个重新定位组件的方法。如果调用
setLocation(x, y)
则窗口左上角要位于水平向右x像素,垂直向下y像素的位置,坐标(0, 0)是屏幕的左上角位置。类似地,Component中的setBounds方法可以实现一步调整组件(特别是JFrame)的大小和位置,例如
setBounds(x, y, width, height)
组件类的很多方法是以获取/设置方法对形式出现的,例如,Frame 类的以下方法:
public String getTitle()
public void setTitle(String title)
这样的一对获取/设置方法被称为属性( property)。 属性有一个名和一个类型。将get或set之后的第一个字母改为小写字母就可以得到相应的属性名。例如,Frame 类有一个名为title且类型为String的属性。
从概念上讲,title 是窗体的一-个属性。当设置这个属性时,我们希望用户屏幕上的标题能够改变。当获取这个属性时,希望能够返回已经设置的属性值。
关于get/set约定,有一个例外: 对于类型为boolean的属性,获取方法以is开头。例如,下面两个方法定义了resizable 属性:
public boolean isResizable()
public void setResizable(boolean resizable)
要确定适当的窗体大小,首先要得出屏幕的大小。调用Toolkit类的静态方法getDefaultToolkit得到一个Toolkit对象( Toolkit类相当于一一个“基地”,包含大量与原生窗口系统交互的方法)。然后,调用getScreenSize方法,这个方法以Dimension对象的形式返回屏幕的大小。Dimension对象同时用公共( ! )实例变量width和height保存屏幕的宽度和高度。然后可以使用屏幕大小的一个适当的百分数指定窗体的大小。下面是相关的代码:
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenwidth = screenSize.width;
int screenHeight = screenSize.height;
setSize(screenWidth / 2, screenHeight / 2);
另外,还提供窗体图标。
Image img = new ImageIcon("icon.gif").getImage();
setIconImage(img);
有了(1)和(2)的相关知识,设计一个简单的图形用户界面就不再话下了。