ITEEDU

13-2-4:改变JColorChooser的颜色选择面版.

在以前我们曾经提到JColorChooser提供3种面版让我们选择,分别"Swatches","HSB"与"RGB".这3个面版是java已经构造好的颜 色面版,如果佻要自行产生自己所设计的颜色面版,你可以继承AbstractColorChooserPanel这个抽象类,并实现里面的抽象方法,这个 抽象类位于javax.swing.colorchooser这个package中.当你实现完成之后,你可以使用JColorChooser类提供的addChooserPanel() 方法,或是setChooserPanels()方法,将你所设计的颜色面版增加到上图的颜色显示面版中.

若你想删除某一个颜色面版模式,你可以先使用JColorChooser类所提供的getChooserPanels()方法,得到类型为 AbstractColorChooserPanel的Array Object.例如在上例中运行所示,"Swatches"就会放在此类型的Array[0]中,面"HSB"会放在 Array[1]中,以此类推.得到此Array Object之后,我们就可以利用JColorChooser类提供的removeChooserPanel()方法.决定删除一个 颜色面版.例如我们若要删除上例运行所示的"HSB"面版,我们可以在上面范例/****add code***/里面增加这2行程序:

AbstractColorChooserPanel[] colorPanel=colorChooser.getChooserPanels();
colorChooser.removeChooserPanel(colorPanel[1]);  

13-3:建立分隔线(JSeparator): JSeparator)的类层次结构图:

java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JSeparator JSeparator通常用在菜单(Menu)或工具栏(ToolBar)上,可以明显地分格出不同的功能区域.在JMenu或JPopupMenu中我们可以使用 addSeparator()方法轻易的加入分隔线,但若是在一般的面版中呢?这时候我们必须自行建立JSeparator对象,然后再依照自己所需将 分隔线放在所想要的位置上.JSeparator有水平与垂直两种,建立的方式非常简单,我们来看看JSeparator的构造函数:

JSeparator构造函数:
  • JSeparator():建立水平的JSeparator组件.
  • JSeparator(int orientation):建立水平或垂直的JSeparator组件.

JSeparator类所提供的方法跟其他Swing组件比较起来算是少了许多,因为分隔线本身并没有什么功能可言,主要是设置分隔线的方 向,其他如分隔线的长短或设置位置方法,都可以在它的父类JComponent中找到.

下面我们来看如何使用JSeparator,并显示水平与垂 直分隔线的外观.

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

public class SeparatorDemo1 {
	JFrame f = null;

	public SeparatorDemo1() {
		f = new JFrame("Separator Example");
		Container contentPane = f.getContentPane();
		contentPane.setLayout(new BorderLayout(1, 2));

		JPanel panel1 = new JPanel(new GridLayout(2, 1));
		JLabel label = new JLabel("水平分隔线", JLabel.CENTER);
		JSeparator seph = new JSeparator();
		panel1.add(label);
		panel1.add(seph);

		JTextArea textarea = new JTextArea();
		textarea.setPreferredSize(new Dimension(150, 100));
		JPanel panel2 = new JPanel(new BorderLayout());
		panel2.add(panel1, BorderLayout.NORTH);
		panel2.add(textarea, BorderLayout.CENTER);

		JPanel panel3 = new JPanel(new GridLayout(1, 3));
		label = new JLabel("垂直");
		label.setVerticalAlignment(JLabel.CENTER);
		panel3.add(label);
		JSeparator sepv = new JSeparator();
		sepv.setOrientation(JSeparator.VERTICAL);
		panel3.add(sepv);

		contentPane.add(panel2, BorderLayout.CENTER);
		contentPane.add(panel3, BorderLayout.EAST);
		f.pack();
		f.setVisible(true);

		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] arg) {
		new SeparatorDemo1();
	}
}