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();
	}
}