核心Swing组件(三)
4.3 JLabel类
我们要近距离查看的第一个真正的Swing组件就是最简单的JLabel。JLabel用作AWT Label的替换组件,但是所能做的事情更多。AWT Label仅限制为单行文本,JLabel可以是文本,图片,或者是两者都有。文本可以是单行文本也可以是HTML文本。另外,JLabel可以支持不同的允许与禁止的图片。图4-6显示了一些示例JLabel组件。
4.3.1 创建JLabel
JLabel有6个构造函数:
public JLabel() JLabel label = new JLabel(); public JLabel(Icon image) Icon icon = new ImageIcon("dog.jpg"); JLabel label = new JLabel(icon); public JLabel(Icon image, int horizontalAlignment) Icon icon = new ImageIcon("dog.jpg"); JLabel label = new JLabel(icon, JLabel.RIGHT); public JLabel(String text) JLabel label = new JLabel("Dog"); public JLabel(String text, int horizontalAlignment) JLabel label = new JLabel("Dog", JLabel.RIGHT); public JLabel(String text, Icon icon, int horizontalAlignment) Icon icon = new ImageIcon("dog.jpg"); JLabel label = new JLabel("Dog", icon, JLabel.RIGHT);通过JLabel的构造函数,我们可以自定义JLabel的三个属性:text, icon或是horizontalAlignment。默认情况下,text与icon属性是空的,而初始的horizontalAlignment属性设置依赖于构造函数的参数。这些设置可以是JLabel.LEFT,JLabel.CENTER或是JLabel.RIGHT。在大多数情况下,没有指定horizontalAlignment会导致左对齐标签。然而,如果仅指定了初始图标,则默认的对齐方式为居中对齐。
4.3.2 JLabel属性
表4-8显示了JLabel的14个属性。这些属性允许我们定制JLabel的内容,位置以及行为。
JLabel属性
属性名 |
数据类型 |
访问性 |
accessibleContext |
AccessibleContext |
只读 |
disabledIcon |
Icon |
读写绑定 |
displayedMnemonic |
char |
读写绑定 |
displaydMnemonicIndex |
int |
读写绑定 |
horizontalAlignment |
int |
读写绑定 |
horizontalTextPosition |
int |
读写绑定 |
icon |
Icon |
读写绑定 |
iconTextGap |
int |
读写绑定 |
labelFor |
Component |
读写绑定 |
text |
String |
读写绑定 |
UI |
LabelUI |
读写 |
UIClassID |
String |
只读 |
verticalAlignment |
int |
读写绑定 |
verticalTextPosition |
int |
读写绑定 |
JLabel的内容是文本以及相关联的图片。在一个JLabel内显示图片将会在本章稍后的“接口Icon”一节中进行讨论。然而,我们可以依据于JLabel是允许或是禁止的而显示不同的图标。在默认情况下,如果允许的图标来自一个Image对象(ImageIcon,在本章稍后进行讨论),则允许的图标是灰度平衡的。如果允许图标并不是来自于一个Image,当Jlabel被禁止时则没有图标,除非我们手动指定。
JLabel内容的位置是由四个不同的属性来描述的:horizontalAlignment, horizontalTextPosition, verticalAlignment以及verticalTextPosition。horizontalAlignment与verticalAlignment属性描述了JLabel的内容在其所在的窗口的位置。
水平位置可以是JLabel的LEFT, RIGHT或是CENTER常量。垂直位置可以在TOP, BOTTOM或是CENTER。图4-7显示了各种对齐设置,通过图标显示对齐。
当同时指定了文本与图标时,文本位置属性反应了文本相对于图标的位置。这些属性可以设置为与对齐属性相同的常量。图4-8显示了各种文本属性设置,通过图标反应这些设置。
4.3.3 JLabel事件处理
JLabel并没有特定的事件处理功能。除了通过JComponent继承的事件处理功能以外,JLabel最接近于事件处理的就是displaydMnemonic, displayedMnemonicIndex与labelFor属性的组合使用。
当设置了displayedMnemonic与labelFor属性时,通过配合平台相关的热键按下指定的键时,会使得输入焦点移动到与labelFor属性相关联的组件上。当一个组件并没有自己的方式来显示记忆键设置时,例如所有的输入文本组件,这种用法就十分用。下面是一个演示示例,其运行结果如图4-9所示:
JLabel label = new JLabel("Username"); JTextField textField = new JTextField(); label.setDisplayedMnemonic(KeyEvent.VK_U); label.setLabelFor(textField);
补充:软件开发 , Java ,