在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串或图标。在应用程序的用户界面中,一个简短的文本标签可以使用户直到这些组件的目的,所以标签在Swing中是比较常用的组件。
一、标签的使用
标签由JLabel类定义,它的父类为JComponent类,该类提供了以下几个构造方法:
1、public JLabel():创建一个不带图标和文本的JLabel对象
2、public JLabel(Icon icon):创建一个带图标的JLabel对象
3、public JLabel(Icon icon,int aligment):创建一个带图标的JLabel对象,并设置图标水平对齐
4、public JLabel(String text,int aligment):创建一个带文本的JLabel对象,并设置文本水平对齐
5、public JLabel(String text,Icon icon,int aligment):创建一个带文本、带图标的JLabel对象,并将图标、文本设置为水平对齐
二、图标的使用
Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。
1、创建图标
在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。如果使用Icon接口,必须实现Icon接口的三个方法:
(1)public int getIconHeight():获取图标长
(2)public int getIconWeight():获取图标宽
(3)public void paintIcon(Component arg0,Graphics arg1,int arg3):实现在指定坐标画图
示例如下:
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class DrawIcon {
public static void main(String[] args) {
JFrame frame = new JFrame();
JLabel label = new JLabel(new ElliptIcon(380, 260, Color.red));
label.setLayout(new GridLayout(2, 2));
frame.setContentPane(label);
for (int i = 0; i < 4; i++) {
label.add(new JLabel(new ElliptIcon(100, 60, Color.blue)));
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class ElliptIcon implements Icon {
private int w, h;
private Color color;
public ElliptIcon(int w, int h, Color color) {
this.w = w;
this.h = h;
this.color = color;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.setColor(color);
g.fillOval(x, y, w, h);
}
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
}
运行结果如下图:
2、使用图片图标
Swing中的图标除了可以绘制之外,还可以使用某个特定的图片创建。Swing利用java.swing.ImageIcon类根据现有图片创建图标,该类有多个构造方法,如下:
(1)public ImageIcon():创建一个通用的ImageIcon对象
(2)public ImageIcon(Image image):可以直接从图片源创建图标
(3)public ImageIcon(Image image,Strign description):除了可以从图片源创建图标之外,还可以为这个图标添加简短的描述,这个描述不会显示,可以使用getDescription()方法获取
(4)public ImageIcon(URL url):利用位于计算机网络上的图像文件创建图标
示例如下:
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 = MyImageIcon.class.getResource("AIshibie.jpg");
Icon icon = new ImageIcon(url);
jl.setIcon(icon);
jl.setHorizontalAlignment(SwingConstants.CENTER);
jl.setOpaque(true);
container.add(jl);
setSize(250,100);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String agrs[]) {
new MyImageIcon();
}
}
运行结果如下: