Swing类JColorChooser类使用

题目:
任选一种Swing组件
1、介绍这个Swing组件的使用(get\set)
2、当这个Swing组件作为事件源时,用户可以怎样和这个事件进行交互(键盘,鼠标的交互都可以)
3、编写范例代码说明并且使用文字进行说明

JColorChooser 类颜色选择器提供了一个窗格设计,让用户操作和选择颜色的控制。
1、构造器,创建一个默认初始颜色为白色的颜色选择器。

public JColorChooser();

2、构造器,创建一个初始颜色为initColor的颜色选择器。

public JColorChooser( Color initalColor);

3、 在component(父组件)中部显示一个颜色选择面板,标题为title,初始颜色为initalColor, 返回选择的颜色。

public static Color showDialog(Component component, String title,Color initalColor) throws HandlessException ; 

4、 返回一个以colorChooser定义的颜色选择面板对话, 父组件为component,标题为title,model表示是否为模式对话,两个事件监听器分别为点击面板上的“确定”“取消”按钮的响应。

public static JDialog creatDialog(Component component,String title, JColorChooser colorChooser, boolean model, ActionListener okListener, ActionListener cancelListener ) throws HandlessException; 

5、返回选定的颜色。

public Color getColor(); 

6、删除或替换预览面板

tcc.setPreviewPanel(new JPanel());

7、打开颜色选择对话框

Color newColor = JColorChooser.showDialog(  ColorChooserDemo2.this,
 "Choose Background Color",
banner.getBackground());

以上方法打开一个模式对话框,如想打开一个非模式对话框,可以使用createDialog方法,这个方法允许你为OK和CANCEL按钮自定义ActionListener。

8、将JColorChooser作为一般组件添加到某容器中

public class ColorChooserDemo extends JPanel ... {
    public ColorChooserDemo() {        
super(new BorderLayout());
        banner = new JLabel("Welcome to the Tutorial Zone!",                            JLabel.CENTER);        banner.setForeground(Color.yellow);
 . . .
tcc = new JColorChooser(banner.getForeground());
 . . .        
add(tcc, BorderLayout.PAGE_END);   
 }

9、ColorSelctionModel
JColorChooser使用ColorSeclectionModel管理当前颜色的选择,当前颜色发生变化时,该对象会向注册的ChangeListener发送一个ChangeEvent事件,可以通过相应该事件,及时反映颜色的变化。

tcc.getSelectionModel().addChangeListener(this);
 . . .
public void stateChanged(ChangeEvent e) {
 Color newColor = tcc.getColor();
    banner.setForeground(newColor);
    }

10、创建一个自定义的选择面板
可以通过addChooserPanel方法添加一个自定义的选择面板,如果你想完全替换默认面板,请使用setChooserPanels方法:

//Override the chooser panels with our own.
AbstractColorChooserPanel panels[] = { new CrayonPanel() };
 tcc.setChooserPanels(panels);

其中CrayonPanel是AbstractColorChooserPanel的一个子类,必须重写其中的5个抽象方法。

范例:

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

public class SwingControlDemo {

    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public SwingControlDemo(){
        prepareGUI();
    }

    public static void main(String[] args){
        SwingControlDemo  swingControlDemo = new SwingControlDemo();
        swingControlDemo.showColorChooserDemo();
    }

    private void prepareGUI(){
        mainFrame = new JFrame("Java Swing Examples");
        mainFrame.setSize(400,400);
        mainFrame.setLayout(new GridLayout(3, 1));
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent){
                System.exit(0);
            }
        });
        headerLabel = new JLabel("", JLabel.CENTER);
        statusLabel = new JLabel("",JLabel.CENTER);

        statusLabel.setSize(350,100);

        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());

        mainFrame.add(headerLabel);
        mainFrame.add(controlPanel);
        mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }

    private void showColorChooserDemo(){
        headerLabel.setText("Control in action: JColorChooser");

        JButton chooseButton = new JButton("Choose Background");
        chooseButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Color backgroundColor = JColorChooser.showDialog(mainFrame,
                        "Choose background color", Color.white);
                if(backgroundColor != null){
                    controlPanel.setBackground(backgroundColor);
                    mainFrame.getContentPane().setBackground(backgroundColor);
                }
            }
        });

        controlPanel.add(chooseButton);
        mainFrame.setVisible(true);
    }
}

运行示例图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值