java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JLabel
在以前的许多范例,我们已经使用过JLabel这个组件,相信大家对此组件应该不会感到陌生,接下来我们来深入了解JLabel 的各种我特性。
一般而言:我们最常在JLabel上放置文字或图形,也因此我们常常需要调整JLabel上文字或图形。在JLabel实现了 SwingConstants这个interface,而这个interface主要是定义一些组件排列方式的参数:
TOP LEFT RIGHT BOTTOM CENTER NORTH EAST WEST SOUTH NORTH_EAST SOUTH_EAST SOUTH_WEST NORTH_WEST HORIZONTAL VERTICAL LEADING 置于前端 TRAILING 置于后端。
在swing中,有相当多的类均实现了SwingConstants这个interface,如AbstractButton、JCheckBoxMenuItem、JLabel、 JProgressBar、JSeparator、JSlider、JTextField、JTabbedPane、JToolbar等等,因此当你使用到这些组件时,你就可以在适当 的时候,利用SwingConstants的参数来定义组件的位置了。
JLabel共有6种构造函数,如下:
在JLabel中,有几个方法可能是常用到的,例如setHorizontalAlignment(int alignment)与setVerticalAlignment(int alignment),分别是设置标签内组件(文字或Icon)的水平或垂直位置,而setHorizontalTextPosition(int textPosition)与 setVerticalTextPosition(int textPosition)可设置文字相对于Icon的相对位置,另外,setIconTextGap(int iconTextGap)可设 置标签内文字与Icon间的间距、setText(String test)与setIcon(Icon icon)可分别设置标签内的文字与Icon。
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JLabelDemo1 { public static void main(String[] args) { JFrame f = new JFrame("JLabelDemo1"); Container contentPane = f.getContentPane(); JLabel label = new JLabel(); label.setText("Hello"); label.setHorizontalAlignment(JLabel.RIGHT); label.setVerticalAlignment(JLabel.TOP); contentPane.add(label); f.pack(); f.show(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
我们再来看一个有Icon的例子:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JLabelDemo2 { public static void main(String[] args) { JFrame f = new JFrame("JLabelDemo1"); Container contentPane = f.getContentPane(); Icon icon = new ImageIcon(".\\icons\\hello.jpg"); JLabel label = new JLabel("Hello", icon, JLabel.CENTER);// 产生一个具有文字与Icon的JLabel组件, // 并将此文字与Icon置于JLabel的中间。 label.setHorizontalTextPosition(JLabel.CENTER);// 将文字置于Icon的中间,若没有设置此项,默认 // 值为文字在Icon的右边。 label.setVerticalTextPosition(JLabel.TOP);// 将文字置于Icon的上面,若没有设置此项 // ,默认值为中间排列 /* * 若你在此再加入一行label.setIconTextGap(10);将会加大文字"Hello"与Icon间的间距。 */ contentPane.add(label); f.pack(); f.show(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }