1. 程式人生 > >【Java學習】使用JColorChooser(顏色選擇器)

【Java學習】使用JColorChooser(顏色選擇器)

一、概述。

java.swing.JColorChooser(顏色選擇器)用於顏色的選擇、編輯等操作。

二、常用方法。

1.public JColorChooser() : 構造器,建立一個預設初始顏色為白色的顏色選擇器。

2.public JColorChooser( Color initalColor) : 構造器,建立一個初始顏色為initColor的顏色選擇器。

3.public static Color showDialog(Component component, String title,Color initalColor) throws HandlessException :  在component(父元件)中部顯示一個顏色選擇面板,標題為title,初始顏色為initalColor, 返回選擇的顏色。

4.public static JDialog creatDialog(Component component,String title, JColorChooser colorChooser, boolean model, ActionListener okListener, ActionListener cancelListener ) throws HandlessException : 返回一個以colorChooser定義的顏色選擇面板對話, 父元件為component,標題為title,model表示是否為模式對話,兩個事件監聽器分別為點選面板上的“確定”“取消”按鈕的響應。

5.public Color getColor() : 返回選定的顏色。  

三、程式碼例項。

JColorChooser的使用很簡單,主要在showDialog()和createDialog()方法的使用。注意前者只能選擇顏色,後者能通過事件監聽器實現顏色選擇之後的應用。下面的程式碼建立了一個可根據選擇變換顏色的文字展示器。

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

public class JColorChooserTest {
	private JFrame frame = new JFrame("文字展示器");
	// 建立一個標籤居中顯示文字
	private JLabel label = new JLabel("平凡不平庸", JLabel.CENTER);
	// 選擇顏色後不會改變顏色,只有應用後才會
	private JButton choose = new JButton("選擇顏色");
	private JButton apply = new JButton("應用顏色");
	// 建立一鍵換色按鈕
	private JButton change = new JButton("一鍵變色");
	private Color color = Color.BLACK;

	public void init() {
		// 設定展示文字的字型和大小
		label.setFont(new Font("華文行楷", 1, 50));
		frame.add(label);

		JPanel panel = new JPanel();
		// 只有選擇顏色後應用按鈕才可用
		apply.setEnabled(false);
		// 新增監聽器
		choose.addActionListener(e -> {
			try {
				color = JColorChooser.showDialog(frame, "選擇字型顏色", color);
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			// 應用按鈕可用
			apply.setEnabled(true);
		});

		apply.addActionListener(e -> {
			label.setForeground(color);
		});

		change.addActionListener(e -> {
			JColorChooser colorChooser = new JColorChooser();
			JDialog dialog = JColorChooser.createDialog(frame, "請選擇顏色", false, colorChooser,
					e1 -> label.setForeground(colorChooser.getColor()), null);
			dialog.setVisible(true);
		});
		panel.add(choose);
		panel.add(apply);
		panel.add(change);
		frame.add(panel, BorderLayout.SOUTH);

		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new JColorChooserTest().init();
	}
}

四、更多 

更多詳細參考API文件學習: https://docs.oracle.com/javase/8/docs/api/javax/swing/JColorChooser.html