1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 import javax.swing.event.*;
5
6 public class ColorDialog extends JDialog {
7
8 private int redValue, greenValue, blueValue;
9 private Color color = null;
10
11
12 private JSlider jslRed = new JSlider(0, 128);
13 private JSlider jslGreen = new JSlider(0, 128);
14 private JSlider jslBlue = new JSlider(0, 128);
15
16
17 private JButton jbtOK = new JButton("OK");
18 private JButton jbtCancel = new JButton("Cancel");
19
20
21 private JPanel jpSelectedColor = new JPanel();
22
23 public ColorDialog() {
24 this(null, true);
25 }
26
27 public ColorDialog(java.awt.Frame parent, boolean modal) {
28 super(parent, modal);
29 setTitle("Choose Color");
30
31
32 JPanel jpButtons = new JPanel();
33 jpButtons.add(jbtOK);
34 jpButtons.add(jbtCancel);
35
36
37 JPanel jpLabels = new JPanel();
38 jpLabels.setLayout(new GridLayout(3, 0));
39 jpLabels.add(new JLabel("Red"));
40 jpLabels.add(new JLabel("Green"));
41 jpLabels.add(new JLabel("Blue"));
42
43
44 JPanel jpSliders = new JPanel();
45 jpSliders.setLayout(new GridLayout(3, 0));
46 jpSliders.add(jslRed);
47 jpSliders.add(jslGreen);
48 jpSliders.add(jslBlue);
49
50
51 JPanel jpSelectColor = new JPanel();
52 jpSelectColor.setLayout(new BorderLayout());
53 jpSelectColor.setBorder(
54 BorderFactory.createTitledBorder("Select Color"));
55 jpSelectColor.add(jpLabels, BorderLayout.WEST);
56 jpSelectColor.add(jpSliders, BorderLayout.CENTER);
57
58
59 JPanel jpColor = new JPanel();
60 jpColor.setLayout(new BorderLayout());
61 jpColor.add(jpSelectColor, BorderLayout.SOUTH);
62 jpColor.add(jpSelectedColor, BorderLayout.CENTER);
63
64
65 add(jpButtons, BorderLayout.SOUTH);
66 add(jpColor, BorderLayout.CENTER);
67 pack();
68
69 jbtOK.addActionListener(new ActionListener() {
70 @Override
71 public void actionPerformed(ActionEvent e) {
72 setVisible(false);
73 }
74 });
75
76 jbtCancel.addActionListener(new ActionListener() {
77 @Override
78 public void actionPerformed(ActionEvent e) {
79 color = null;
80 setVisible(false);
81 }
82 });
83
84 jslRed.addChangeListener(new ChangeListener() {
85 @Override
86 public void stateChanged(ChangeEvent e) {
87 redValue = jslRed.getValue();
88 color = new Color(redValue, greenValue, blueValue);
89 jpSelectedColor.setBackground(color);
90 }
91 });
92
93 jslGreen.addChangeListener(new ChangeListener() {
94 @Override
95 public void stateChanged(ChangeEvent e) {
96 greenValue = jslGreen.getValue();
97 color = new Color(redValue, greenValue, blueValue);
98 jpSelectedColor.setBackground(color);
99 }
100 });
101
102 jslBlue.addChangeListener(new ChangeListener() {
103 @Override
104 public void stateChanged(ChangeEvent e) {
105 blueValue = jslBlue.getValue();
106 color = new Color(redValue, greenValue, blueValue);
107 jpSelectedColor.setBackground(color);
108 }
109 });
110 }
111
112 @Override
113 public Dimension getPreferredSize() {
114 return new java.awt.Dimension(200, 200);
115 }
116
117
118 public Color getColor() {
119 return color;
120 }
121 }