Package

Source Code of ColorPickerSample$CustomPane

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.colorchooser.AbstractColorChooserPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class ColorPickerSample extends JFrame {

    Color c;

    public ColorPickerSample() {
        super("JColorChooser Test Frame");
        setSize(200, 100);
        setLocation(200, 100);
        final JButton go = new JButton("Show JColorChoser");
        final Container contentPane = getContentPane();
        go.addActionListener(new ActionListener() {
                final JColorChooser chooser = new JColorChooser();

                boolean first = true;

                public void actionPerformed(ActionEvent e) {
                if (first) {
                first = false;
                GrayScalePanel gsp = new GrayScalePanel();
                chooser.addChooserPanel(gsp);
                chooser.setPreviewPanel(new CustomPane());
                }
                JDialog dialog = JColorChooser.createDialog(ColorPickerSample.this,
                    "Demo 3", true, chooser, new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    c = chooser.getColor();
                    }
                    }, null);
                dialog.setLocation(300, 300);
                dialog.setVisible(true);
                contentPane.setBackground(c);
                }
        });
        contentPane.add(go, BorderLayout.SOUTH);
        // addWindowListener(new BasicWindowMonitor()); // 1.1 & 1.2
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public class CustomPane extends JPanel {
        JLabel j1 = new JLabel("This is a custom preview pane", JLabel.CENTER);

        JLabel j2 = new JLabel("This label previews the background",
                JLabel.CENTER);

        public CustomPane() {
            super(new GridLayout(0, 1));
            j2.setOpaque(true);
            add(j1);
            add(j2);
        }

        public void setForeground(Color c) {
            super.setForeground(c);
            if (j1 != null) {
                j1.setForeground(c);
                j2.setBackground(c);
            }
        }
    }

    public static void main(String args[]) {
        ColorPickerSample cp3 = new ColorPickerSample();
        cp3.setVisible(true);
    }
}

//GrayScalePanel.java
//A simple implementation of the AbstractColorChooserPanel class. This class
//provides a slider and a textfield for picking out a shade of gray.
//

class GrayScalePanel extends AbstractColorChooserPanel implements
    ChangeListener, ActionListener {

  JSlider scale;

  JTextField percentField;

  // Set up our list of grays. We'll assume we have all 256 possible shades,
  // and we'll do it when the class is loaded.
  static Color[] grays = new Color[256];
  static {
    for (int i = 0; i < 256; i++) {
      grays[i] = new Color(i, i, i);
    }
  }

  public GrayScalePanel() {
    setLayout(new GridLayout(0, 1));

    // create the slider and attach us as a listener
    scale = new JSlider(JSlider.HORIZONTAL, 0, 255, 128);
    scale.addChangeListener(this);

    // Set up our display for the chooser
    add(new JLabel("Pick your shade of gray:", JLabel.CENTER));
    JPanel jp = new JPanel();
    jp.add(new JLabel("Black"));
    jp.add(scale);
    jp.add(new JLabel("White"));
    add(jp);

    JPanel jp2 = new JPanel();
    percentField = new JTextField(3);
    percentField.setHorizontalAlignment(SwingConstants.RIGHT);
    percentField.addActionListener(this);
    jp2.add(percentField);
    jp2.add(new JLabel("%"));
    add(jp2);
  }

  // We did this work in the constructor so we can skip it here.
  protected void buildChooser() {
  }

  // Make sure the slider is in sync with the other panels.
  public void updateChooser() {
    Color c = getColorSelectionModel().getSelectedColor();
    scale.setValue(toGray(c));
  }

  protected int toGray(Color c) {
    int r = c.getRed();
    int g = c.getGreen();
    int b = c.getBlue();
    // Grab the luminance the same way GIMP does...
    return (int) Math.round(0.3 * r + 0.59 * g + 0.11 * b);
  }

  // Pick a name for our tab in the chooser
  public String getDisplayName() {
    return "Gray Scale";
  }

  // No need for an icon.
  public Icon getSmallDisplayIcon() {
    return null;
  }

  public Icon getLargeDisplayIcon() {
    return null;
  }

  // And lastly, update the selection model as our slider changes.
  public void stateChanged(ChangeEvent ce) {
    getColorSelectionModel().setSelectedColor(grays[scale.getValue()]);
    percentField.setText(""
        + (100 - (int) Math.round(scale.getValue() / 2.55)));
  }

  public void actionPerformed(ActionEvent ae) {
    int val = 100 - Integer.parseInt(ae.getActionCommand());
    getColorSelectionModel().setSelectedColor(grays[(int) (val * 2.55)]);
  }
}
TOP

Related Classes of ColorPickerSample$CustomPane

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.