【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

猜你喜欢

转载自blog.csdn.net/chen_z_p/article/details/82749846