import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class FrameAc {

	public static JSlider sliderGENISLIK;
	public static JSlider sliderYUKSEKLIK;
	
	public static JLabel labelGENISLIK = new JLabel("GENİŞLİK");
	public static JLabel labelYUKSEKLIK = new JLabel("YÜKSEKLİK");
	
	public static JButton buton = new JButton();
	
	public static int GENISLIK=400;
	public static int YUKSEKLIK=300;
	public static int pencere = 1;
	
	public static String frameOlcusu = "JFrame -> GENİŞLİK : " + GENISLIK + " YÜKSEKLİK : " + YUKSEKLIK;
	
	public FrameAc() {
		
		JFrame frame = new JFrame("077 JSlider kullanarak JFrame açma islemi");
		frame.setLayout(null);
		
		Dimension ekranOlcusu = Toolkit.getDefaultToolkit().getScreenSize();
		
		int genislik = ekranOlcusu.width;
		int yukseklik = ekranOlcusu.height;
		
		System.out.println("Ekran ölçüsü = " + genislik + " x " + yukseklik + " piksel.");
	
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(255, 229, 153));
		panel.setBounds(10, 10, 980, 355);
		
		JLabel label = new JLabel(frameOlcusu);
		label.setHorizontalAlignment(JLabel.CENTER);
		label.setFont(new Font("Helvetica", Font.BOLD, 37));
		label.setBounds(50, 220, 900, 75);
		
		labelGENISLIK.setFont(new Font("Helvetica", Font.PLAIN, 27));
		labelGENISLIK.setBounds(10, 10, 150, 40);
		
		labelYUKSEKLIK.setFont(new Font("Helvetica", Font.PLAIN, 27));
		labelYUKSEKLIK.setBounds(10, 100, 150, 40);
		
		int minimum = 100;
		int maximumGenislik = genislik-100;
	    int maximumYukseklik = yukseklik-100;
	    int baslangic = 300;
	    
	    sliderGENISLIK = new JSlider(minimum, maximumGenislik, baslangic);
	    sliderGENISLIK.setPaintTicks(true);
	    sliderGENISLIK.setMinorTickSpacing(50);
	    sliderGENISLIK.setPaintTrack(true);
	    sliderGENISLIK.setMajorTickSpacing(200);
	    sliderGENISLIK.setPaintLabels(true);
	    sliderGENISLIK.setFont(new Font("Helvetica", Font.BOLD, 23));
	    sliderGENISLIK.setOrientation(SwingConstants.HORIZONTAL);
	    sliderGENISLIK.setBounds(5, 40, 950, 50);
	    
	    sliderYUKSEKLIK = new JSlider(minimum, maximumYukseklik, baslangic);
	    sliderYUKSEKLIK.setPaintTicks(true);
	    sliderYUKSEKLIK.setMinorTickSpacing(10);
	    sliderYUKSEKLIK.setPaintTrack(true);
	    sliderYUKSEKLIK.setMajorTickSpacing(200);
	    sliderYUKSEKLIK.setPaintLabels(true);
	    sliderYUKSEKLIK.setFont(new Font("Helvetica", Font.BOLD, 23));
	    sliderYUKSEKLIK.setOrientation(SwingConstants.HORIZONTAL);
	    sliderYUKSEKLIK.setBounds(5, 130, 950, 100);
	    
	    buton.setText("Frame Aç");
	    buton.setBounds(430, 300, 140, 40);
	    
	    sliderGENISLIK.addChangeListener(new ChangeListener() {
	    	public void stateChanged(ChangeEvent e) {
	    		
	    		int value = sliderGENISLIK.getValue();
	    		GENISLIK = value;
	    		
	    		frameOlcusu = "JFrame -> GENİŞLİK : " + GENISLIK + " YÜKSEKLİK : " + YUKSEKLIK;
	    		
	    		label.setText(frameOlcusu);
	    		
	         }
	      });
	    
	    sliderYUKSEKLIK.addChangeListener(new ChangeListener() {
	    	public void stateChanged(ChangeEvent e) {
	    		
	    		int value = sliderYUKSEKLIK.getValue();
	    		YUKSEKLIK = value;
	    		
	    		frameOlcusu = "JFrame -> GENİŞLİK : " + GENISLIK + " YÜKSEKLİK : " + YUKSEKLIK;
	    		
	    		label.setText(frameOlcusu);
	    		
	         }
	      });
	    
	    buton.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent e) {
	    		
	    		System.out.println("Genislik  = " + GENISLIK);
	    		System.out.println("Yukseklik = " + YUKSEKLIK);
	    		
	    		istenenFrame(GENISLIK, YUKSEKLIK, pencere++);
	    		
	    	}
	    });
	    
	    panel.add(labelGENISLIK);
	    panel.add(sliderGENISLIK);
	    
	    panel.add(labelYUKSEKLIK);
	    panel.add(sliderYUKSEKLIK);
	    
	    panel.add(label);
	    panel.add(buton);
	    
	    frame.add(panel);
	   
		frame.getContentPane().setBackground(new Color(5, 61, 56));
		frame.setSize(1000, 400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
			

	}

	public static JFrame istenenFrame(int gen, int yuk, int a) {
		
		Color[] fonRenk = new Color[5];
		fonRenk[0] = new Color(186, 203, 217);
		fonRenk[1] = new Color(247, 201, 88);
		fonRenk[2] = new Color(231, 209, 254);
		fonRenk[3] = new Color(242, 226, 5);
		fonRenk[4] = new Color(253, 164, 169);
		
		
		JFrame frame = new JFrame("JFrame | G: " + gen + " Y: " + yuk);
		
		frame.setLocation(25*a, 25*a);
		frame.setSize(gen, yuk);
	
		frame.getContentPane().setBackground(fonRenk[a%5]);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setVisible(true);
		
		return frame;
		
	}
}
