Sketcher程序的一个局限性在于,你不能直接得到有关当前所选图元的类型和颜色的反馈信息。对于显示各种应用程序参数的状态来说,应用Windows的状态栏是一种通用、便捷的方式。

java 获得工具栏高度 java工具栏怎么设计_java中如何改变状态栏

我们可以构造自己的StatusBar类,它将定义一个状态栏。理想的方法是设计一个通用的状态栏,然后再为Sketcher定制它,但实际上我们将采用一种简单方法,即为Sketcher设计一个特定的状态栏类。JPanel类描述了窗格,所以它是构造StatusBar,类的合适的基类。我们可以使用JLabel类作为定义状态栏窗格的基类,为了突出显示再加一个凹形的边框。

我们从在Skether的底部构造一个具有两个窗格的状态栏开始,这两个窗格分别显示了当前图元的类型和颜色。此后我们就可以准确地知道将要绘制的图元。我们先定义一个StatusBar类,用它来描述应用程序窗口中的状态栏,然后在Statusl3ar类中再定义一个StatusPane类。、

这是一个StatusBar类的最初定义:

//class defining a status bar

import javax.swing.*;

如何工作因为StatusBar实现了Constants接口,所以所有描述可用图元类型和颜色的变量都可以使用。StatusBar的框架版木有两个StatusPane类烈的数据成员,它们分别明来显示当前的颜色和图元的类型。StatusPane最初显示的信息作为String对象传递给构造函数。

在StatusBar的构造数中,我们通过调用SetColorPane()和setTypePane()方法更新每个窗格上的显示信息。这样做就确保了StatnsPane对象最初将显示我们为应用程序定义的默认颜色以及图元类型。在需要更新状态栏时,就要凋用这些方法中的某一个或几个。当我们结束了StatusPane的细节内容后,也就完成了setColorPane()和setTypePanse()的定义。

StatusBar窗格有一个在构造函数中设置的F1owLayout管理器。状态栏中的窗格仅显示少量的文本,因此我们从J1abe1类派生了StatusPane类,这样一来状态栏下的窗格就是一种特殊的Jlahel.这就意味着我们可以调用从Jlahel继承过来的setText()方法为自己的StatusPane设置文木。当这些文木加到状态栏时,StatusPane对象将左对齐,这是由 StatusBar构造函数中调用sETLayout()方法的第一个自变量决定的。布局管理器将会在状态栏的窗格之间的水平方向留出10个像素的间隔,在组件之间的垂直方向留出3个像素的间隔。状态栏的边框是一条暗灰色的线,它是利用BorderFactory方法添加的。

在StatusFane类中惟一的数据成员是Font类型的对象font.我们为窗格文本定义了大小为10磅的标准Serif字体。在构造函数中,我们将背景颜色设置为浅灰色,前景颜色设置为暗灰色以及标准字体。我们还调用了继承过来的方法setHorizontalAlignment(),将对齐方式用CENTER设置为中心对齐,这是在基类JLahel中定义的。

如果我们可以保持每个窗格的宽度固定不变,在更改文本内容时,就更改以防止来回跳跃。因此我们可以用setPreferredSize()方法将窗格的尺寸设置为最长文本所需的最小值。最后在StatusPane的构造函数中通过调用继承过来的setText()方法设置窗格的文本。