一、概述。
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