import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
/**
* <p>Title: 顏色選擇器</p>
* <p>Description: 演示一個顏色選擇器,可以從樣本中選擇,可以使用HSB模式和RGB模式</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: ColorChooserDemo.java</p>
* @version 1.0
*/
public class ColorChooserDemo extends JPanel
implements ChangeListener {
protected JColorChooser tcc;
protected JLabel banner;
public ColorChooserDemo() {
super(new BorderLayout());
//設置一個標簽,做廣告的。也用來顯示用戶選擇的顏色。
banner = new JLabel("歡迎使用顏色選擇器!",
JLabel.CENTER);
banner.setForeground(Color.yellow);
banner.setBackground(Color.blue);
banner.setOpaque(true);
banner.setFont(new Font("SansSerif", Font.BOLD, 24));
banner.setPreferredSize(new Dimension(100, 65));
JPanel bannerPanel = new JPanel(new BorderLayout());
bannerPanel.add(banner, BorderLayout.CENTER);
bannerPanel.setBorder(BorderFactory.createTitledBorder("廣告"));
//設置選擇顏色選擇器
tcc = new JColorChooser(banner.getForeground());//設置初始顏色
tcc.getSelectionModel().addChangeListener(this);//給所有模式添加監聽
tcc.setBorder(BorderFactory.createTitledBorder("選擇顏色"));
add(bannerPanel, BorderLayout.CENTER);
add(tcc, BorderLayout.PAGE_END);
}
/**
*<br>方法說明:事件監聽。用戶選擇顏色觸發
*<br>輸入參數:ChangeEvent e 用戶選擇事件
*<br>返回類型:
*/
public void stateChanged(ChangeEvent e) {
Color newColor = tcc.getColor();//獲取用戶選擇的顏色
banner.setForeground(newColor);
}
/**
*<br>方法說明:主方法
*<br>輸入參數:
*<br>返回類型:
*/
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
//創建窗體
JFrame frame = new JFrame("ColorChooserDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//創建面板容器
JComponent newContentPane = new ColorChooserDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
//顯示窗體
frame.pack();
frame.setVisible(true);
}
}