文字标签组件与图标
在 Swing 程序设计中,标签(JLabel)用于显示文本、图标等内容。在 Swing 应用程序的用户界面中,用户能够通过标签上的文本、图标等内容获得相应的提示信息。本节将对 Swing 标签的用法、如何创建标签和如何在标签上显示文本及图标等内容予以讲解。
JLabel标签
标签(JLabel)的父类是 JComponent 类。虽然标签不能被添加监听器,但是标签显示的文本、图标等内容可以被指定对齐方式。
使用 JLabel 类的构造方法可以创建多种标签,如显示只有文本的标签、只有图标的标签以及同时包含文本和图标的标签等。JLabel 类常用的构造方法如下。
-
public JLabel():创建一个不带图标或文本的标签。
-
public JLabel(Icon icon):创建一个带图标的标签。
-
public JLabel(Icon icon, int aligment):创建一个带图标的标签,并设置图标的水平对齐方式。
-
public JLabel(String text, int aligment):创建一个带文本的标签,并设置文本的水平对齐方式。
-
public JLabel(String text, Icon icon, int aligment):创建一个带文本和图标的 JLabel 对象,并设置文本和图标的水平对齐方式。
【例18.13】在窗体中显示文字标签(实例位置:资源包\TM\sl\18\13)
向 JPanel 面板中添加一个 JLabel 标签组件,在标签中显示 “这是一个JFrame窗体”。
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class JLabelTest extends JFrame {
public JLabelTest() {
Container container = getContentPane();
// 创建一个标签
JLabel jl = new JLabel("这是一个JFrame窗体");
container.add(jl); // 将标签添加到容器中
setSize(200, 100); // 设置窗体大小
// 设置窗体关闭模式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true); // 使窗体可见
}
public static void main(String args[]) {
new JLabelTest(); // 创建MyImageIcon对象
}
}
运行结果如图18.17所示。

图标的使用
在 Swing 程序设计中,图标经常被添加到标签、按钮等组件上,使用 javax.swing.ImageIcon 类可以依据现有的图片创建图标。ImageIcon 类实现了 Icon 接口,它有多个构造方法,常用的如下。
-
public ImageIcon():创建一个 ImageIcon 对象,然后使用其调用 setImage(Image image) 方法设置图片。
-
public ImageIcon(Image image):依据现有的图片创建图标。
-
public ImageIcon(URL url):依据现有图片的路径创建图标。
【例18.14】在窗体中演示图标(实例位置:资源包\TM\sl\18\14)
创建 MyImageIcon 类,并继承 JFrame 类。首先在 MyImageIcon 类中创建 ImageIcon 对象,然后使用 ImageIcon 对象依据现有的图片创建图标,接着使用 public JLabel(String text, int aligment) 构造方法创建一个 JLabel 对象,最后使用 JLabel 对象调用 setIcon() 方法为标签设置图标。
import java.awt.Container;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class MyImageIcon extends JFrame {
public MyImageIcon() {
Container container = getContentPane();
//创建一个标签
JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);
//获取图片所在的URL
URL url = MyImageIcon.class.getResource("pic.png");
Icon icon = new ImageIcon(url); //创建Icon对象
jl.setIcon(icon); //为标签设置图片
//设置文字放置在标签中间
jl.setHorizontalAlignment(SwingConstants.CENTER);
jl.setOpaque(true); //设置标签为不透明状态
container.add(jl); //将标签添加到容器中
setSize(300, 200); //设置窗体大小
setVisible(true); //使窗体可见
//设置窗体关闭模式
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new MyImageIcon(); //创建MyImageIcon对象
}
}
运行结果如图18.18所示。
java.lang.Class 类中的 getResource() 方法可以获取本类(编译后的 class 文件)所在的完整路径。 |
编程训练(答案位置:资源包\TM\sl\18\编程训练)
【训练7】全景地图 将十字路口4个方向的车况截图按2行2列显示在窗体中,效果如图18.19所示。


【训练8】随机背景 有3幅图片,运行窗体时,将在这3幅图片中随机抽取一张作为窗体的背景图片。