在以前我们曾经提到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]);
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类所提供的方法跟其他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(); } }