import java.awt.Color;
import java.awt.Font;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class RGBSlider {
	
	public static JSlider sliderRED;
	public static JSlider sliderGREEN;
	public static JSlider sliderBLUE;
	
	public static JLabel labelRED = new JLabel("RED");
	public static JLabel labelGREEN = new JLabel("GREEN");
	public static JLabel labelBLUE = new JLabel("BLUE");
	
	public static int RED = 0;
	public static int GREEN = 0;
	public static int BLUE = 0;
	
	public static String renkKodu = "RGB -> " + RED + " / " + GREEN + " / " + BLUE;

	public RGBSlider() {
		
		JFrame frame = new JFrame("076 JSlider kullanarak RGB renk kodu islemi");
		frame.setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(221, 242, 220));
		panel.setBounds(20, 20, 960, 350);
		
		JPanel panelRGB = new JPanel();
		panelRGB.setLayout(null);
		panelRGB.setBackground(new Color(RED, GREEN, BLUE));
		panelRGB.setBounds(20, 400, 960, 150);
		
		JLabel label = new JLabel(renkKodu);
		label.setHorizontalAlignment(JLabel.CENTER);
		label.setFont(new Font("Helvetica", Font.BOLD, 55));
		label.setBounds(50, 290, 800, 50);
		
		labelRED.setFont(new Font("Helvetica", Font.PLAIN, 27));
		labelRED.setBounds(10, 10, 100, 30);
		
		labelGREEN.setFont(new Font("Helvetica", Font.PLAIN, 27));
		labelGREEN.setBounds(10, 100, 100, 30);
		
		labelBLUE.setFont(new Font("Helvetica", Font.PLAIN, 27));
		labelBLUE.setBounds(10, 190, 100, 30);
		
		
		int minimum = 0;
	    int maximum = 255;
	    int basamak = 1;
	    
	    sliderRED = new JSlider(minimum, maximum, basamak);
	    sliderRED.setPaintTicks(true);
	    sliderRED.setMinorTickSpacing(1);
	    sliderRED.setPaintTrack(true);
	    sliderRED.setMajorTickSpacing(15);
	    sliderRED.setPaintLabels(true);
	    sliderRED.setFont(new Font("Helvetica", Font.BOLD, 23));
	    sliderRED.setOrientation(SwingConstants.HORIZONTAL);
	    sliderRED.setBounds(5, 40, 950, 50);
	    
	    sliderGREEN = new JSlider(minimum, maximum, basamak);
	    sliderGREEN.setPaintTicks(true);
	    sliderGREEN.setMinorTickSpacing(1);
	    sliderGREEN.setPaintTrack(true);
	    sliderGREEN.setMajorTickSpacing(15);
	    sliderGREEN.setPaintLabels(true);
	    sliderGREEN.setFont(new Font("Helvetica", Font.BOLD, 23));
	    sliderGREEN.setOrientation(SwingConstants.HORIZONTAL);
	    sliderGREEN.setBounds(5, 130, 950, 50);
	    
	    sliderBLUE = new JSlider(minimum, maximum, basamak);
	    sliderBLUE.setPaintTicks(true);
	    sliderBLUE.setMinorTickSpacing(1);
	    sliderBLUE.setPaintTrack(true);
	    sliderBLUE.setMajorTickSpacing(15);
	    sliderBLUE.setPaintLabels(true);
	    sliderBLUE.setFont(new Font("Helvetica", Font.BOLD, 23));
	    sliderBLUE.setOrientation(SwingConstants.HORIZONTAL);
	    sliderBLUE.setBounds(5, 220, 950, 50);
	    
	    sliderRED.addChangeListener(new ChangeListener() {
	    	public void stateChanged(ChangeEvent e) {
	    		
	    		int value = sliderRED.getValue();
	    		RED = value;
	    		
	    		renkKodu = "RGB -> " + RED + " / " + GREEN + " / " + BLUE;
	    		
	    		label.setText(renkKodu);
	    		
	    		panelRGB.setBackground(new Color(RED, GREEN , BLUE ));
	    		
	         }
	      });
	    
	    sliderGREEN.addChangeListener(new ChangeListener() {
	    	public void stateChanged(ChangeEvent e) {
	    		
	    		int value = sliderGREEN.getValue();
	    		GREEN = value;
	    		
	    		renkKodu = "RGB -> " + RED + " / " + GREEN + " / " + BLUE;
	    		
	    		label.setText(renkKodu);
	    		
	    		panelRGB.setBackground(new Color(RED, GREEN , BLUE ));
	    		
	         }
	      });
	    
	    sliderBLUE.addChangeListener(new ChangeListener() {
	    	public void stateChanged(ChangeEvent e) {
	    		
	    		int value = sliderBLUE.getValue();
	    		BLUE = value;
	    		
	    		renkKodu = "RGB -> " + RED + " / " + GREEN + " / " + BLUE;
	    		
	    		label.setText(renkKodu);
	    		
	    		panelRGB.setBackground(new Color(RED, GREEN , BLUE ));
	    		
	         }
	      });
	    
	    panel.add(labelRED);
	    panel.add(sliderRED);
	    
	    panel.add(labelGREEN);
	    panel.add(sliderGREEN);
	    
	    panel.add(labelBLUE);
	    panel.add(sliderBLUE);
	    
	    panel.add(label);
	    
	    frame.add(panel);
	    frame.add(panelRGB);
		
		frame.getContentPane().setBackground(new Color(217, 208, 191));
		frame.setSize(1000, 600);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
		
	}

}
