import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class RGB extends JFrame implements ChangeListener{
JLabel rgbLbl = new JLabel("RGB(150, 150, 150)", JLabel.CENTER);
JPanel rgbView = new JPanel();
int red=150, green=150, blue=150;
Color color = new Color(150, 150, 150);
//패널만들기
JPanel rgbInfo = new JPanel(new BorderLayout());
JPanel labelPane = new JPanel(new GridLayout(3, 1));
JLabel redLbl = new JLabel("RED");
JLabel greenLbl = new JLabel("GREEN");
JLabel blueLbl = new JLabel("BLUE");
JPanel sliderPane = new JPanel(new GridLayout(3, 1));
JSlider redSlider = new JSlider(0, 255, 150);
JSlider greenSlider = new JSlider(0, 255, 150);
JSlider blueSlider = new JSlider(0, 255, 150);
JPanel colorPane = new JPanel(new GridLayout(3, 1));
JLabel redClrLbl = new JLabel(" ");
JLabel greenClrLbl = new JLabel(" ");
JLabel blueClrLbl = new JLabel(" ");
public RGB() {
add(rgbLbl, "North");
rgbView.setBackground(color); //패널컬러세팅
add(rgbView, "Center");
labelPane.add(redLbl); labelPane.add(greenLbl); labelPane.add(blueLbl);
rgbInfo.add(labelPane, "West");
redSlider.setMajorTickSpacing(50);
redSlider.setMinorTickSpacing(5);
redSlider.setPaintTicks(true);
redSlider.setPaintLabels(true);
greenSlider.setMajorTickSpacing(50);
greenSlider.setMinorTickSpacing(5);
greenSlider.setPaintTicks(true);
greenSlider.setPaintLabels(true);
blueSlider.setMajorTickSpacing(50);
blueSlider.setMinorTickSpacing(5);
blueSlider.setPaintTicks(true);
blueSlider.setPaintLabels(true);
sliderPane.add(redSlider); sliderPane.add(greenSlider); sliderPane.add(blueSlider);
rgbInfo.add(sliderPane, "Center");
LineBorder lb = new LineBorder(Color.CYAN, 3);
TitledBorder tb = new TitledBorder(lb, "Color Split", TitledBorder.CENTER,
TitledBorder.CENTER, new Font("Serif", Font.BOLD, 15), Color.BLACK);
rgbInfo.setBorder(tb);
redClrLbl.setOpaque(true);
redClrLbl.setBackground(new Color(150, 0, 0));
greenClrLbl.setOpaque(true);
greenClrLbl.setBackground(new Color(0, 150, 0));
blueClrLbl.setOpaque(true);
blueClrLbl.setBackground(new Color(0, 0, 150));
colorPane.add(redClrLbl); colorPane.add(greenClrLbl); colorPane.add(blueClrLbl);
rgbInfo.add(colorPane, "East");
add(rgbInfo, "South");
setSize(500, 350);
setVisible(true);
//이벤트 등록
redSlider.addChangeListener(this);
greenSlider.addChangeListener(this);
blueSlider.addChangeListener(this);
}
public void stateChanged(ChangeEvent ce){
Object obj = ce.getSource();
if(obj == redSlider){
red = redSlider.getValue();
redClrLbl.setBackground(new Color(red, 0, 0));
}else if(obj == greenSlider){
green = greenSlider.getValue();
greenClrLbl.setBackground(new Color(0, green, 0));
}else if(obj == blueSlider){
blue = blueSlider.getValue();
blueClrLbl.setBackground(new Color(0, 0, blue));
}
rgbView.setBackground(new Color(red, green, blue));
rgbLbl.setText("RGB("+red+", "+green+", "+blue+")");
}
public static void main(String[] args) {
new RGB();
}
}