-
Notifications
You must be signed in to change notification settings - Fork 0
/
ColorMixer.java
139 lines (118 loc) · 4.43 KB
/
ColorMixer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* A graphical user interface (GUI) application that allows users to mix colors
* by adjusting red, green, and blue sliders. The chosen color is displayed on
* a panel and its RGB code is updated in real-time.
*
* @author (Hanka R.)
*/
public class ColorMixer extends JFrame {
/**
* The panel where the mixed color is displayed.
*/
private JPanel colorPanel;
/**
* A slider for adjusting the red component of the mixed color.
*/
private JSlider redSlider;
/**
* A slider for adjusting the green component of the mixed color.
*/
private JSlider greenSlider;
/**
* A slider for adjusting the blue component of the mixed color.
*/
private JSlider blueSlider;
/**
* A button that resets the sliders to their default positions (all red, green, and blue set to 0).
*/
private JButton resetButton;
/**
* A label that displays the RGB code of the currently selected color.
*/
private JLabel colorCodeLabel;
/**
* Creates a new ColorMixer instance, initializes its components, and displays the GUI.
*/
public ColorMixer() {
super("Color Mixer");
// Create the color panel and set its background to black
colorPanel = new JPanel();
colorPanel.setBackground(Color.BLACK);
add(colorPanel, BorderLayout.CENTER);
// Set preferred height only
Dimension preferredSize = new Dimension(colorPanel.getPreferredSize().width, 150); // Adjust height value as needed
colorPanel.setPreferredSize(preferredSize);
// Create the color code label and set its initial text
colorCodeLabel = new JLabel("RGB: (0, 0, 0)");
add(colorCodeLabel, BorderLayout.NORTH);
// Create the red slider with a range of 0 to 255 and add a change listener
redSlider = new JSlider(0, 255);
redSlider.setValue(0); // Set initial value to 0
redSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
updateColor();
}
});
// Create the green slider (similar to red slider)
greenSlider = new JSlider(0, 255);
greenSlider.setValue(0); // Set initial value to 0
greenSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
updateColor();
}
});
// Create the blue slider (similar to red slider)
blueSlider = new JSlider(0, 255);
blueSlider.setValue(0); // Set initial value to 0
blueSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
updateColor();
}
});
// Create the reset button and add an action listener
resetButton = new JButton("Reset");
resetButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
redSlider.setValue(0);
greenSlider.setValue(0);
blueSlider.setValue(0);
updateColor();
}
});
// Create a panel to hold the controls (sliders and reset button)
JPanel controlsPanel = new JPanel();
controlsPanel.add(redSlider);
controlsPanel.add(greenSlider);
controlsPanel.add(blueSlider);
controlsPanel.add(resetButton);
add(controlsPanel, BorderLayout.SOUTH);
// Finalize the frame layout and make it visible
pack();
setVisible(true);
}
/**
* Updates the color displayed on the panel and the color code label based on the current slider values.
*/
private void updateColor() {
int red = redSlider.getValue();
int green = greenSlider.getValue();
int blue = blueSlider.getValue();
// Create a new Color object based on the current slider values
Color color = new Color(red, green, blue);
colorPanel.setBackground(color);
// Update the color code label to reflect the changes
colorCodeLabel.setText("RGB: (" + red + ", " + green + ", " + blue + ")");
}
public static void main(String[] args) {
new ColorMixer();
}
}