ITEEDU

swing的版面结构

版面管理器

事件处理

鼠标事件

键盘事件处理

窗口与面板的使用

JInternalFrame的使用(窗口与面板)

JTabbedPane,JScroolPane,JScrolBa的使用

标签与按钮的使用与介绍

[复选框、选项按钮、列表方框、下拉式列表的使用与介绍]

表格(Table)的使用与介绍

JTable的事件处理

1文字输入组件的使用与介绍

树(Tree)的使用与介绍

对话框(Option Pane与Dialog)的使用与介绍

菜单与工具栏的使用与介绍

文件选择对话框,颜色选择对话框,分隔线的使用与介绍.

Slider,Timer,Progress的使用

6-3:JLabel的使用:

类层次结构图:
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构造函数:
  • JLabel():建立一个空白的JLabel组件。
  • JLabel(Icon image):建立一个含有Icon的JLabel组件,Icon的默认排列方式是CENTER.
  • JLabel(Icon image,int horizontalAlignment):建立一个含有Icon的JLabel组件,并指定其排列方式。
  • JLabel(String text):建立一个含有文字的JLabel组件,文字的默认排列方式是LEFT.
  • JLabel(String text,int horizontalAlignment):建立一个含有文字的JLabel组件,并指定其排列方式。
  • JLabel(String text,Icon icon,int horizontalAlignment):建立一个含有文字与Icon的JLabel组件,并指定其排列方式, 文字与Icon的间距,默认值是4个pixels.

在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。

JLabelDemo1.java
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);
			}
		});
	}
}