【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