在第5章例5-6、例5-10和例5-11中,部分实现了LoginDemo的界面,在这几个程序中仅使用默认的流式布局管理器而没有使用面板,某些控件之间的对齐使用了空标签调整彼此间隔。解决控件布局问题的根本办法是使用布局管理器,其中还需要使用面板。下面,分两步实现注册软件LoginDemo界面,目的是使程序短一些,便于解释而已。
【例13-1】注册软件LoginDemo界面实现一。
运行程序结果如图13-1所示。
[编程说明]
(1)框架JFrame的默认布局管理器
因为框架JFrame的默认布局管理器是边界布局管理器,所以程序中不需要再设置布局管理器。语句(15.1.2)将标签lYourInform放入边界布局的北面。注意,Java的参数必须全部用大写英文字母,比如,本例的北面用BorderLayout.NORTH。
图13-1 LoginDemo界面一
(2)框架JFrame的默认放置区域
因为边界布局的5个区域,即东面、南面、西面、北面和中心区域,每个区域只能放置一个控件。若放置多于1个控件时,在该区域中出现的是最后一个控件。本例中,需要在中心区域放置多个控件,所以,设计一块面板centerPanel。在面板中,放置多个控件。而将这块面板作为一个控件放入中心区域。注意语句(13.1.3)和其中的注释。将面板centerPanel放入边界布局的中心区域,一般地要用语句
因为JFrame的默认放置区域是中心区域,所以,在JFrame中,语句(13.1.3)等价于语句(13.1.4)。读者可自行实验证实。
(3)面板Panel的默认布局管理器
面板Panel的默认布局管理器是流式布局管理器。在中心面板centerPanel中将放置4块面板。为简单起见,没有为中心面板设计布局,即对这4块面板采用默认的流式布局。
【例13-2】注册软件LoginDemo界面实现二,加入panel4。
运行程序结果如图13-2所示。(www.xing528.com)
[编程说明]
(1)面板布局
语句(13.1.5)对面板panel4设置网格布局管理器。这里,强调对什么对象设置布局管理器,本例是对面板panel4,所以应有“panel4.”。若没有“panel4.”,语句
就是
其意义是为当前对象,即为框架JFrame设置网格布局管理器。Java的初学者常常在此发生错误。类似的错误还有使用方法add()。语句(13.1.6)意义是将标签lHobby放入面板panel4,若没有“panel4.”,语句
图13-2 LoginDemo界面二
就是
其结果将标签lHobby放入当前对象框架JFrame中。
(2)关键词super
语句(13.1.7)出现了关键词super。我们知道Java用关键词this代表“当前对象”或“本对象”,在实例中,这个this代表对象LoginDemo2。Java用关键词super代表当前对象的直接父类。因为当前对象LoginDemo2继承了LoginDemo1,所以,super代表了对象LoginDemo1。注意,中心面板centerPanel是在LoginDemo1中定义和实例化的。所以,本程序需要将panel4放入到LoginDemo1的中心面板centerPanel中,当然要指出的是旧这块面板是其直接父类的面板,即
再用方法add(),其关系就清楚了。
具有super的类似语句有(13.1.8)。因为将直接父类的中心面板centerPanel放入当前对象中,所以,在方法add()前就省略了关键词this。
与(2)有关的是变量centerPanel的作用域问题。注意,在例13-1程序LoginDemo1中,centerPanel是全局变量,参见语句(13.1.1)。设置为全局变量是与表示为(13.1.9)这个形式配合的。如果程序LoginDemo1.java在其构造方法中定义变量centerPanel,即它不是全局变量,则表示式(13.1.9)将找不到对象centerPanel。这就是变量的作用域问题,读者不妨试试。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。