public class MyPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
. . .
}
}
public MyPanel()
{
setPreferredSize(new Dimension(width, height));
. . .
}
public class RectanglePanel
{
. . .
private Rectangle box;
}
1 | import javax.swing.JButton; |
2 | import javax.swing.JFrame; |
3 | import javax.swing.JLabel; |
4 | import javax.swing.JPanel; |
5 | import javax.swing.JTextField; |
6 | |
7 | /** |
8 | This program displays a frame containing a RectanglePanel. |
9 | */ |
10 | public class RectangleTest |
11 | { |
12 | public static void main(String[] args) |
13 | { |
14 | RectanglePanel rectPanel = new RectanglePanel(); |
15 | |
16 | JFrame appFrame = new JFrame(); |
17 | appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
18 | appFrame.setContentPane(rectPanel); |
19 | appFrame.pack(); |
20 | appFrame.show(); |
21 | } |
22 | } |
1 | import java.awt.event.MouseEvent; |
2 | import java.awt.event.MouseListener; |
3 | import java.awt.Dimension; |
4 | import java.awt.Graphics; |
5 | import java.awt.Graphics2D; |
6 | import java.awt.Rectangle; |
7 | import javax.swing.JPanel; |
8 | |
9 | /** |
10 | A rectangle panel displays a rectangle that a user can |
11 | move by clicking the mouse. |
12 | */ |
13 | public class RectanglePanel extends JPanel |
14 | { |
15 | /** |
16 | Constructs a rectangle panel with the rectangle at a |
17 | default location. |
18 | */ |
19 | public RectanglePanel() |
20 | { |
21 | setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); |
22 | |
23 | // the rectangle that the paint method draws |
24 | box = new Rectangle(BOX_X, BOX_Y, |
25 | BOX_WIDTH, BOX_HEIGHT); |
26 | |
27 | // add mouse press listener |
28 | |
29 | class MousePressListener implements MouseListener |
30 | { |
31 | public void mousePressed(MouseEvent event) |
32 | { |
33 | int x = event.getX(); |
34 | int y = event.getY(); |
35 | box.setLocation(x, y); |
36 | repaint(); |
37 | } |
38 | |
39 | // do-nothing methods |
40 | public void mouseReleased(MouseEvent event) {} |
41 | public void mouseClicked(MouseEvent event) {} |
42 | public void mouseEntered(MouseEvent event) {} |
43 | public void mouseExited(MouseEvent event) {} |
44 | } |
45 | |
46 | MouseListener listener = new MousePressListener(); |
47 | addMouseListener(listener); |
48 | } |
49 | |
50 | public void paintComponent(Graphics g) |
51 | { |
52 | super.paintComponent(g); |
53 | Graphics2D g2 = (Graphics2D)g; |
54 | g2.draw(box); |
55 | } |
56 | |
57 | private Rectangle box; |
58 | private static final int BOX_X = 100; |
59 | private static final int BOX_Y = 100; |
60 | private static final int BOX_WIDTH = 20; |
61 | private static final int BOX_HEIGHT = 30; |
62 | |
63 | private static final int PANEL_WIDTH = 300; |
64 | private static final int PANEL_HEIGHT = 300; |
65 | } |
panel.setLayout(new BorderLayout());
1 | import javax.swing.JFrame; |
2 | |
3 | /** |
4 | This program tests the RectangleFrame. |
5 | */ |
6 | public class RectangleTest |
7 | { |
8 | public static void main(String[] args) |
9 | { |
10 | JFrame appFrame = new RectangleFrame(); |
11 | appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
12 | appFrame.show(); |
13 | } |
14 | } |
1 | import java.awt.BorderLayout; |
2 | import java.awt.event.ActionEvent; |
3 | import java.awt.event.ActionListener; |
4 | import javax.swing.JButton; |
5 | import javax.swing.JFrame; |
6 | import javax.swing.JLabel; |
7 | import javax.swing.JPanel; |
8 | import javax.swing.JTextField; |
9 | |
10 | /** |
11 | This frame contains a panel that displays a rectangle |
12 | and a panel of text fields to specify the rectangle position. |
13 | */ |
14 | public class RectangleFrame extends JFrame |
15 | { |
16 | /** |
17 | Constructs the frame. |
18 | */ |
19 | public RectangleFrame() |
20 | { |
21 | // the panel that draws the rectangle |
22 | rectPanel = new RectanglePanel(); |
23 | |
24 | // add panel to content Pane |
25 | getContentPane().add(rectPanel, BorderLayout.CENTER); |
26 | |
27 | createControlPanel(); |
28 | |
29 | pack(); |
30 | } |
31 | |
32 | /** |
33 | Creates the control panel with the text fields |
34 | at the bottom of the frame. |
35 | */ |
36 | private void createControlPanel() |
37 | { |
38 | // the text fields for entering the x- and y-coordinates |
39 | final JTextField xField = new JTextField(5); |
40 | final JTextField yField = new JTextField(5);; |
41 | |
42 | // the button to move the rectangle |
43 | JButton moveButton = new JButton("Move"); |
44 | |
45 | class MoveButtonListener implements ActionListener |
46 | { |
47 | public void actionPerformed(ActionEvent event) |
48 | { |
49 | int x = Integer.parseInt(xField.getText()); |
50 | int y = Integer.parseInt(yField.getText()); |
51 | rectPanel.setLocation(x, y); |
52 | } |
53 | }; |
54 | |
55 | ActionListener listener = new MoveButtonListener(); |
56 | moveButton.addActionListener(listener); |
57 | |
58 | // the labels for labeling the text fields |
59 | JLabel xLabel = new JLabel("x = "); |
60 | JLabel yLabel = new JLabel("y = "); |
61 | |
62 | // the panel for holding the user interface components |
63 | JPanel controlPanel = new JPanel(); |
64 | |
65 | controlPanel.add(xLabel); |
66 | controlPanel.add(xField); |
67 | controlPanel.add(yLabel); |
68 | controlPanel.add(yField); |
69 | controlPanel.add(moveButton); |
70 | |
71 | getContentPane().add(controlPanel, BorderLayout.SOUTH); |
72 | } |
73 | |
74 | private RectanglePanel rectPanel; |
75 | } |
76 | |
77 | |
78 | |
79 | |
80 |
1 | import java.awt.Dimension; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.Rectangle; |
5 | import javax.swing.JPanel; |
6 | |
7 | /** |
8 | This panel displays a rectangle. |
9 | */ |
10 | public class RectanglePanel extends JPanel |
11 | { |
12 | /** |
13 | Constructs a rectangle panel with the rectangle at a |
14 | default location. |
15 | */ |
16 | public RectanglePanel() |
17 | { |
18 | setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); |
19 | // the rectangle that the paint method draws |
20 | box = new Rectangle(BOX_X, BOX_Y, |
21 | BOX_WIDTH, BOX_HEIGHT); |
22 | } |
23 | |
24 | /** |
25 | Sets the location of the rectangle and repaints the panel. |
26 | @param x the x-coordinate of the top left corner of the rectangle |
27 | @param y the y-coordinate of the top left corner of the rectangle |
28 | */ |
29 | public void setLocation(int x, int y) |
30 | { |
31 | box.setLocation(x, y); |
32 | repaint(); |
33 | } |
34 | |
35 | public void paintComponent(Graphics g) |
36 | { |
37 | super.paintComponent(g); |
38 | Graphics2D g2 = (Graphics2D)g; |
39 | g2.draw(box); |
40 | } |
41 | |
42 | private Rectangle box; |
43 | private static final int BOX_X = 100; |
44 | private static final int BOX_Y = 100; |
45 | private static final int BOX_WIDTH = 20; |
46 | private static final int BOX_HEIGHT = 30; |
47 | |
48 | private static final int PANEL_WIDTH = 300; |
49 | private static final int PANEL_HEIGHT = 300; |
50 | } |
1 | import javax.swing.JFrame; |
2 | |
3 | /** |
4 | This program tests the ChoiceFrame. |
5 | */ |
6 | public class ChoiceTest |
7 | { |
8 | public static void main(String[] args) |
9 | { |
10 | JFrame frame = new ChoiceFrame(); |
11 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
12 | frame.show(); |
13 | } |
14 | } |
15 |
1 | import java.awt.BorderLayout; |
2 | import java.awt.Container; |
3 | import java.awt.Font; |
4 | import java.awt.GridLayout; |
5 | import java.awt.event.ActionEvent; |
6 | import java.awt.event.ActionListener; |
7 | import java.awt.event.WindowAdapter; |
8 | import java.awt.event.WindowEvent; |
9 | import javax.swing.ButtonGroup; |
10 | import javax.swing.JButton; |
11 | import javax.swing.JCheckBox; |
12 | import javax.swing.JComboBox; |
13 | import javax.swing.JFrame; |
14 | import javax.swing.JLabel; |
15 | import javax.swing.JPanel; |
16 | import javax.swing.JRadioButton; |
17 | import javax.swing.border.EtchedBorder; |
18 | import javax.swing.border.TitledBorder; |
19 | |
20 | /** |
21 | This frame contains a text field and a control panel |
22 | to change the font of the text. |
23 | */ |
24 | public class ChoiceFrame extends JFrame |
25 | { |
26 | /** |
27 | Constructs the frame. |
28 | */ |
29 | public ChoiceFrame() |
30 | { |
31 | // construct text sample |
32 | sampleField = new JLabel("Big Java"); |
33 | getContentPane().add(sampleField, BorderLayout.CENTER); |
34 | |
35 | // this listener is shared among all components |
36 | class ChoiceListener implements ActionListener |
37 | { |
38 | public void actionPerformed(ActionEvent event) |
39 | { |
40 | setSampleFont(); |
41 | } |
42 | } |
43 | |
44 | listener = new ChoiceListener(); |
45 | |
46 | createControlPanel(); |
47 | setSampleFont(); |
48 | pack(); |
49 | } |
50 | |
51 | /** |
52 | Creates the control panel to change the font. |
53 | */ |
54 | public void createControlPanel() |
55 | { |
56 | JPanel facenamePanel = createComboBox(); |
57 | JPanel sizeGroupPanel = createCheckBoxes(); |
58 | JPanel styleGroupPanel = createRadioButtons(); |
59 | |
60 | // line up component panels |
61 | |
62 | JPanel controlPanel = new JPanel(); |
63 | controlPanel.setLayout(new GridLayout(3, 1)); |
64 | controlPanel.add(facenamePanel); |
65 | controlPanel.add(sizeGroupPanel); |
66 | controlPanel.add(styleGroupPanel); |
67 | |
68 | // add panels to content pane |
69 | |
70 | getContentPane().add(controlPanel, BorderLayout.SOUTH); |
71 | } |
72 | |
73 | /** |
74 | Creates the combo box with the font style choices. |
75 | @return the panel containing the combo box |
76 | */ |
77 | public JPanel createComboBox() |
78 | { |
79 | facenameCombo = new JComboBox(); |
80 | facenameCombo.addItem("Serif"); |
81 | facenameCombo.addItem("SansSerif"); |
82 | facenameCombo.addItem("Monospaced"); |
83 | facenameCombo.setEditable(true); |
84 | facenameCombo.addActionListener(listener); |
85 | |
86 | JPanel panel = new JPanel(); |
87 | panel.add(facenameCombo); |
88 | return panel; |
89 | } |
90 | |
91 | /** |
92 | Creates the check boxes for selecting bold and italic style |
93 | @return the panel containing the check boxes |
94 | */ |
95 | public JPanel createCheckBoxes() |
96 | { |
97 | italicCheckBox = new JCheckBox("Italic"); |
98 | italicCheckBox.addActionListener(listener); |
99 | |
100 | boldCheckBox = new JCheckBox("Bold"); |
101 | boldCheckBox.addActionListener(listener); |
102 | |
103 | JPanel panel = new JPanel(); |
104 | panel.add(italicCheckBox); |
105 | panel.add(boldCheckBox); |
106 | panel.setBorder |
107 | (new TitledBorder(new EtchedBorder(), "Style")); |
108 | |
109 | return panel; |
110 | } |
111 | |
112 | /** |
113 | Creates the radio buttons to select the font size |
114 | @return the panel containing the radio buttons |
115 | */ |
116 | public JPanel createRadioButtons() |
117 | { |
118 | smallButton = new JRadioButton("Small"); |
119 | smallButton.addActionListener(listener); |
120 | |
121 | mediumButton = new JRadioButton("Medium"); |
122 | mediumButton.addActionListener(listener); |
123 | |
124 | largeButton = new JRadioButton("Large"); |
125 | largeButton.addActionListener(listener); |
126 | largeButton.setSelected(true); |
127 | |
128 | // add radio buttons to button group |
129 | |
130 | ButtonGroup group = new ButtonGroup(); |
131 | group.add(smallButton); |
132 | group.add(mediumButton); |
133 | group.add(largeButton); |
134 | |
135 | JPanel panel = new JPanel(); |
136 | panel.add(smallButton); |
137 | panel.add(mediumButton); |
138 | panel.add(largeButton); |
139 | panel.setBorder |
140 | (new TitledBorder(new EtchedBorder(), "Size")); |
141 | |
142 | return panel; |
143 | } |
144 | |
145 | /** |
146 | Gets user choice for font name, style, and size |
147 | and sets the font of the text sample. |
148 | */ |
149 | public void setSampleFont() |
150 | { // get font name |
151 | |
152 | String facename |
153 | = (String)facenameCombo.getSelectedItem(); |
154 | |
155 | // get font style |
156 | |
157 | int style = 0; |
158 | if (italicCheckBox.isSelected()) |
159 | style = style + Font.ITALIC; |
160 | if (boldCheckBox.isSelected()) |
161 | style = style + Font.BOLD; |
162 | |
163 | // get font size |
164 | |
165 | int size = 0; |
166 | |
167 | final int SMALL_SIZE = 24; |
168 | final int MEDIUM_SIZE = 36; |
169 | final int LARGE_SIZE = 48; |
170 | |
171 | if (smallButton.isSelected()) |
172 | size = SMALL_SIZE; |
173 | else if (mediumButton.isSelected()) |
174 | size = MEDIUM_SIZE; |
175 | else if (largeButton.isSelected()) |
176 | size = LARGE_SIZE; |
177 | |
178 | // set font of text field |
179 | |
180 | sampleField.setFont(new Font(facename, style, size)); |
181 | sampleField.repaint(); |
182 | } |
183 | |
184 | private JLabel sampleField; |
185 | private JCheckBox italicCheckBox; |
186 | private JCheckBox boldCheckBox; |
187 | private JRadioButton smallButton; |
188 | private JRadioButton mediumButton; |
189 | private JRadioButton largeButton; |
190 | private JComboBox facenameCombo; |
191 | private ActionListener listener; |
192 | } |
1 | import javax.swing.JFrame; |
2 | |
3 | /** |
4 | This program tests the MenuFrame. |
5 | */ |
6 | public class MenuTest |
7 | { |
8 | public static void main(String[] args) |
9 | { |
10 | JFrame frame = new MenuFrame(); |
11 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
12 | frame.show(); |
13 | } |
14 | } |
15 |
1 | import java.awt.BorderLayout; |
2 | import java.awt.event.ActionEvent; |
3 | import java.awt.event.ActionListener; |
4 | import java.util.Random; |
5 | import javax.swing.JFrame; |
6 | import javax.swing.JMenu; |
7 | import javax.swing.JMenuBar; |
8 | import javax.swing.JMenuItem; |
9 | |
10 | /** |
11 | This frame has a menu with commands to set the position of |
12 | a rectangle. |
13 | */ |
14 | class MenuFrame extends JFrame |
15 | { |
16 | /** |
17 | Constructs the frame. |
18 | */ |
19 | public MenuFrame() |
20 | { |
21 | generator = new Random(); |
22 | |
23 | // add drawing panel to content pane |
24 | |
25 | panel = new RectanglePanel(); |
26 | getContentPane().add(panel, BorderLayout.CENTER); |
27 | pack(); |
28 | |
29 | // construct menu |
30 | |
31 | JMenuBar menuBar = new JMenuBar(); |
32 | setJMenuBar(menuBar); |
33 | |
34 | menuBar.add(createFileMenu()); |
35 | menuBar.add(createEditMenu()); |
36 | } |
37 | |
38 | /** |
39 | Creates the File menu. |
40 | @return the menu |
41 | */ |
42 | public JMenu createFileMenu() |
43 | { |
44 | JMenu menu = new JMenu("File"); |
45 | menu.add(createFileNewItem()); |
46 | menu.add(createFileExitItem()); |
47 | return menu; |
48 | } |
49 | |
50 | /** |
51 | Creates the Edit menu. |
52 | @return the menu |
53 | */ |
54 | public JMenu createEditMenu() |
55 | { |
56 | JMenu menu = new JMenu("Edit"); |
57 | menu.add(createMoveMenu()); |
58 | menu.add(createEditRandomizeItem()); |
59 | return menu; |
60 | } |
61 | |
62 | /** |
63 | Creates the Move submenu. |
64 | @return the menu |
65 | */ |
66 | public JMenu createMoveMenu() |
67 | { |
68 | JMenu menu = new JMenu("Move"); |
69 | menu.add(createMoveItem("Up", 0, -1)); |
70 | menu.add(createMoveItem("Down", 0, 1)); |
71 | menu.add(createMoveItem("Left", -1, 0)); |
72 | menu.add(createMoveItem("Right", 1, 0)); |
73 | return menu; |
74 | } |
75 | |
76 | /** |
77 | Creates the File->New menu item and sets its action listener. |
78 | @return the menu item |
79 | */ |
80 | public JMenuItem createFileNewItem() |
81 | { |
82 | JMenuItem item = new JMenuItem("New"); |
83 | class MenuItemListener implements ActionListener |
84 | { |
85 | public void actionPerformed(ActionEvent event) |
86 | { |
87 | panel.reset(); |
88 | } |
89 | } |
90 | ActionListener listener = new MenuItemListener(); |
91 | item.addActionListener(listener); |
92 | return item; |
93 | } |
94 | |
95 | /** |
96 | Creates the File->Exit menu item and sets its action listener. |
97 | @return the menu item |
98 | */ |
99 | public JMenuItem createFileExitItem() |
100 | { |
101 | JMenuItem item = new JMenuItem("Exit"); |
102 | class MenuItemListener implements ActionListener |
103 | { |
104 | public void actionPerformed(ActionEvent event) |
105 | { |
106 | System.exit(0); |
107 | } |
108 | } |
109 | ActionListener listener = new MenuItemListener(); |
110 | item.addActionListener(listener); |
111 | return item; |
112 | } |
113 | |
114 | /** |
115 | Creates a menu item to move the rectangle and sets its |
116 | action listener. |
117 | @param label the menu label |
118 | @param dx the amount by which to move the rectangle in x-direction |
119 | @param dy the amount by which to move the rectangle in y-direction |
120 | @return the menu item |
121 | */ |
122 | public JMenuItem createMoveItem(String label, |
123 | final int dx, final int dy) |
124 | { |
125 | JMenuItem item = new JMenuItem(label); |
126 | class MenuItemListener implements ActionListener |
127 | { |
128 | public void actionPerformed(ActionEvent event) |
129 | { |
130 | panel.moveRectangle(dx, dy); |
131 | } |
132 | } |
133 | ActionListener listener = new MenuItemListener(); |
134 | item.addActionListener(listener); |
135 | return item; |
136 | } |
137 | |
138 | /** |
139 | Creates the Edit->Randomize menu item and sets its action listener. |
140 | @return the menu item |
141 | */ |
142 | public JMenuItem createEditRandomizeItem() |
143 | { |
144 | JMenuItem item = new JMenuItem("Randomize"); |
145 | class MenuItemListener implements ActionListener |
146 | { |
147 | public void actionPerformed(ActionEvent event) |
148 | { |
149 | int width = panel.getWidth(); |
150 | int height = panel.getHeight(); |
151 | int dx = -1 + generator.nextInt(2); |
152 | int dy = -1 + generator.nextInt(2); |
153 | panel.moveRectangle(dx, dy); |
154 | } |
155 | } |
156 | ActionListener listener = new MenuItemListener(); |
157 | item.addActionListener(listener); |
158 | return item; |
159 | } |
160 | |
161 | private RectanglePanel panel; |
162 | private Random generator; |
163 | } |
164 | |
165 | |
166 | |
167 |
1 | import java.awt.Dimension; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.Rectangle; |
5 | import javax.swing.JPanel; |
6 | |
7 | /** |
8 | A panel that shows a rectangle. |
9 | */ |
10 | class RectanglePanel extends JPanel |
11 | { |
12 | /** |
13 | Constructs a panel with the rectangle in the top left |
14 | corner. |
15 | */ |
16 | public RectanglePanel() |
17 | { |
18 | setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); |
19 | // the rectangle that the paint method draws |
20 | box = new Rectangle(0, 0, BOX_WIDTH, BOX_HEIGHT); |
21 | } |
22 | |
23 | public void paintComponent(Graphics g) |
24 | { |
25 | super.paintComponent(g); |
26 | Graphics2D g2 = (Graphics2D)g; |
27 | g2.draw(box); |
28 | } |
29 | |
30 | /** |
31 | Resets the rectangle to the top left corner. |
32 | */ |
33 | public void reset() |
34 | { |
35 | box.setLocation(0, 0); |
36 | repaint(); |
37 | } |
38 | |
39 | /** |
40 | Moves the rectangle and repaints it. The rectangle |
41 | is moved by multiples of its full width or height. |
42 | @param dx the number of width units |
43 | @param dy the number of height units |
44 | */ |
45 | public void moveRectangle(int dx, int dy) |
46 | { |
47 | box.translate(dx * BOX_WIDTH, dy * BOX_HEIGHT); |
48 | repaint(); |
49 | } |
50 | |
51 | private Rectangle box; |
52 | private static final int BOX_WIDTH = 20; |
53 | private static final int BOX_HEIGHT = 30; |
54 | private static final int PANEL_WIDTH = 300; |
55 | private static final int PANEL_HEIGHT = 300; |
56 | } |
57 |
1 | import javax.swing.JFrame; |
2 | |
3 | public class SliderTest |
4 | { |
5 | public static void main(String[] args) |
6 | { |
7 | SliderFrame frame = new SliderFrame(); |
8 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
9 | frame.show(); |
10 | } |
11 | } |
12 |
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 | } |