ITEEDU

swing的版面结构

版面管理器

事件处理

鼠标事件

键盘事件处理

窗口与面板的使用

JInternalFrame的使用(窗口与面板)

JTabbedPane,JScroolPane,JScrolBa的使用

标签与按钮的使用与介绍

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

表格(Table)的使用与介绍

JTable的事件处理

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

树(Tree)的使用与介绍

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

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

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

Slider,Timer,Progress的使用

6-2:Icon的使用:

ImageIcon的类层次结构图:
java.lang.Object
   --javax.swing.ImageIcon

ImageIcon的结构函数:

  • ImageIcon():建立一个ImageIcon组件。
  • ImageIcon(byte[] imageData):建立一个ImageIcon组件,Image的数据放在byte array的数据可从GIF获释JPEG的文件读取面来 。
  • ImageIcon(byte[] imageData,String description)建立一个ImageIcon组件,Image的数据放在byte array中,而byte array 的数据可从GIF获释JPEG的文件读取而来,并多了一个此Icon的描述文字。
  • ImageIcon(Image image)利用Image组件,建立一个ImageIcon组件。 ImageIcon(Image image,String description)利用Image组件,建立一个ImageIcon组件,附加此Icon的描述文字。
  • ImageIcon(Staring filename)利用图文件建立一个ImageIcon组件。
  • ImageIcon(Staring filename,String description)利用图文件建立一个ImageIcon组件,附加此Icon的描述文字。
  • ImageIcon(URL location)利用网址建立一个ImageIcon组件。
  • ImageIcon(URL location)利用网址建立一个ImageIcon组件,附加此Icon的描述文字。
ImageIcon.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ImageIconDemo {
	public static void main(String[] args) {
		JFrame f = new JFrame("ImageIconDemo");
		Container contentPane = f.getContentPane();
		Icon icon = new ImageIcon(".\\icons\\visa.gif");
		JLabel label = new JLabel(icon, JLabel.CENTER);
		contentPane.add(label);
		f.pack();
		f.show();
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}

若您想利用读文件的功能,先将图文件转成byte array,再制作Icon组件,你可以用下面的程序帮你完成:

ImageIconDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class ImageIconDemo {
	public static void main(String[] args) {
		byte[] image = null;
		JFrame f = new JFrame("ImageIconDemo");
		Container contentPane = f.getContentPane();
		/*
		 * 在打开文件读文件的过程中可能会发生IOException,因此在下面的程序中用try与catch将此区段包起来。
		 */
		try {
			File file = new File(".\\icons\\visa.gif");// 利用文件visa.gif建立一个File组件。

			int size = (int) file.length();// 并求出此文件的长度。
			FileInputStream in = new FileInputStream(file);// 将文件组件放入FileInputStream中。
			image = new byte[size];
			in.read(image);// 将数据文件读进byte array中。
		} catch (IOException e) {
			System.err.println("File open falure:" + e.getMessage());
		}
		Icon icon = new ImageIcon(image);
		JLabel label = new JLabel(icon, JLabel.CENTER);
		contentPane.add(label);
		f.pack();
		f.show();
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}

Icon是一个Interface,里面包含3种空的抽象文法,分别是getIconHeight()、getIconWidth()与paintIcon();若你想使用Icon类 来制作Icon,你必须实现(implements)这3个方法,我们直接来看下面这个例子,你就能清楚如何实现Icon界面建立Icon组件了。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class IconDemo implements Icon {
	int height = 50;
	int width = 70;

	public int getIconHeight() {
		return height;
	}

	public int getIconWidth() {
		return width;
	}

	public void paintIcon(Component c, Graphics g, int x, int y) {
		g.drawRect(x, y, width, height);
		g.fillRect(x, y, width, height);
		g.setColor(Color.blue);
	}

	public static void main(String[] args) {
		JFrame f = new JFrame("IconDemo");
		Container contentPane = f.getContentPane();

		Icon icon = new IconDemo();
		JLabel label = new JLabel(icon, JLabel.CENTER);
		contentPane.add(label);
		f.pack();
		f.show();
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}