1 |
import java.awt.BorderLayout; |
2 |
import java.awt.Color; |
3 |
import java.awt.Container; |
4 |
import java.awt.Dimension; |
5 |
import java.awt.GridLayout; |
6 |
import java.awt.event.WindowAdapter; |
7 |
import java.awt.event.WindowEvent; |
8 |
import javax.swing.JFrame; |
9 |
import javax.swing.JLabel; |
10 |
import javax.swing.JPanel; |
11 |
import javax.swing.JSlider; |
12 |
import javax.swing.SwingConstants; |
13 |
import javax.swing.event.ChangeListener; |
14 |
import javax.swing.event.ChangeEvent; |
15 |
|
16 |
class SliderFrame extends JFrame |
17 |
{ |
18 |
public SliderFrame() |
19 |
{ |
20 |
colorPanel = new JPanel(); |
21 |
colorPanel.setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); |
22 |
|
23 |
getContentPane().add(colorPanel, BorderLayout.CENTER); |
24 |
createControlPanel(); |
25 |
setSampleColor(); |
26 |
pack(); |
27 |
} |
28 |
|
29 |
public void createControlPanel() |
30 |
{ |
31 |
class ColorListener implements ChangeListener |
32 |
{ |
33 |
public void stateChanged(ChangeEvent event) |
34 |
{ |
35 |
setSampleColor(); |
36 |
} |
37 |
} |
38 |
|
39 |
ChangeListener listener = new ColorListener(); |
40 |
|
41 |
redSlider = new JSlider(0, 100, 100); |
42 |
redSlider.addChangeListener(listener); |
43 |
|
44 |
greenSlider = new JSlider(0, 100, 70); |
45 |
greenSlider.addChangeListener(listener); |
46 |
|
47 |
blueSlider = new JSlider(0, 100, 70); |
48 |
blueSlider.addChangeListener(listener); |
49 |
|
50 |
JPanel controlPanel = new JPanel(); |
51 |
controlPanel.setLayout(new GridLayout(3, 2)); |
52 |
|
53 |
controlPanel.add(new JLabel("Red", |
54 |
SwingConstants.RIGHT)); |
55 |
controlPanel.add(redSlider); |
56 |
|
57 |
controlPanel.add(new JLabel("Green", |
58 |
SwingConstants.RIGHT)); |
59 |
controlPanel.add(greenSlider); |
60 |
|
61 |
controlPanel.add(new JLabel("Blue", |
62 |
SwingConstants.RIGHT)); |
63 |
controlPanel.add(blueSlider); |
64 |
|
65 |
getContentPane().add(controlPanel, BorderLayout.SOUTH); |
66 |
} |
67 |
|
68 |
|
69 |
/** |
70 |
Reads the slider values and sets the panel to |
71 |
the selected color. |
72 |
*/ |
73 |
public void setSampleColor() |
74 |
{ // read slider values |
75 |
|
76 |
float red = 0.01F * redSlider.getValue(); |
77 |
float green = 0.01F * greenSlider.getValue(); |
78 |
float blue = 0.01F * blueSlider.getValue(); |
79 |
|
80 |
// set panel background to selected color |
81 |
|
82 |
colorPanel.setBackground(new Color(red, green, blue)); |
83 |
colorPanel.repaint(); |
84 |
} |
85 |
|
86 |
private JPanel colorPanel; |
87 |
private JSlider redSlider; |
88 |
private JSlider greenSlider; |
89 |
private JSlider blueSlider; |
90 |
|
91 |
private static final int PANEL_WIDTH = 300; |
92 |
private static final int PANEL_HEIGHT = 300; |
93 |
} |