
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

import javax.swing.*;

public class SecilenSayilar {
	
	public static ArrayList<Integer> rastgeleSayiListesi = new ArrayList<Integer>();
	
	public static JLabel etiketSayilar = new JLabel("0");
	
	public static ArrayList<Integer> RandomSayiUret(int elemanSayisi) {

      	for (int i=0 ; i<elemanSayisi ; i++ ) {
		        
			int x = (int) (Math.random()*25)+1;
			rastgeleSayiListesi.add(x);	
	    }
		
		for (int i=0 ; i<elemanSayisi ; i++) {
			
			System.out.print(rastgeleSayiListesi.get(i) + " ");
		}
		
		System.out.println("\n-----");
		
		for (int i=0 ; i<elemanSayisi ; i++) {
			
			for (int j=0 ; j<i ; j++) {
				
				if (j == i) {
					
				} else {
					if (rastgeleSayiListesi.get(i) == rastgeleSayiListesi.get(j)) {
						
						// Ayni sayiyi buldugunda uyari yazisi geliyor console'a
						System.out.println("AYNI : (i="+i+") " + rastgeleSayiListesi.get(i));
						
						// Ayni olan elemani ArrayList'ten siliyoruz.
						// Silinen index'e yeni bir sayi ekliyoruz.
						rastgeleSayiListesi.remove(i);
						int x = (int) (Math.random()*25)+1;
						rastgeleSayiListesi.add(i, x);
						
						// Yeni eklenen sayinin tekrar kontrol edilmesi için 
						// i'yi bir eksiltip tekrar döngüye sokuyoruz.
						i=i-1;
					}
				}
			}
		}
		
		System.out.println("-----");
		
		for (int i=0 ; i<elemanSayisi ; i++) {
			
			System.out.print(rastgeleSayiListesi.get(i) + " ");
		}
		
		return rastgeleSayiListesi;
	}
		
	public SecilenSayilar() {
		
		JFrame pencere = new JFrame("Rastgele Sayilar Listesi");
		pencere.setLayout(null); 
		
		pencere.add(sayiSec());
		
		pencere.setSize(400, 400);
		pencere.setLocationRelativeTo(null);
		pencere.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		pencere.setVisible(true);
	}

	public static JPanel sayiSec() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(255, 210, 252));
		panel.setBounds(20,20,360,340);
		
		JLabel etiket;
		
		String[] rastgeleSayiAdedi = new String[23];        
	    
		rastgeleSayiAdedi[0] = "3 Elemanlı";
		rastgeleSayiAdedi[1] = "4 Elemanlı";
		rastgeleSayiAdedi[2] = "5 Elemanlı";
		rastgeleSayiAdedi[3] = "6 Elemanlı";
		rastgeleSayiAdedi[4] = "7 Elemanlı";
		rastgeleSayiAdedi[5] = "8 Elemanlı";
		rastgeleSayiAdedi[6] = "9 Elemanlı";
		rastgeleSayiAdedi[7] = "10 Elemanlı";
		rastgeleSayiAdedi[8] = "11 Elemanlı";
		rastgeleSayiAdedi[9] = "12 Elemanlı";
		rastgeleSayiAdedi[10] = "13 Elemanlı";
		rastgeleSayiAdedi[11] = "14 Elemanlı";
		rastgeleSayiAdedi[12] = "15 Elemanlı";
		rastgeleSayiAdedi[13] = "16 Elemanlı";
		rastgeleSayiAdedi[14] = "17 Elemanlı";
		rastgeleSayiAdedi[15] = "18 Elemanlı";
		rastgeleSayiAdedi[16] = "19 Elemanlı";
		rastgeleSayiAdedi[17] = "20 Elemanlı";
		rastgeleSayiAdedi[18] = "21 Elemanlı";
		rastgeleSayiAdedi[19] = "22 Elemanlı";
		rastgeleSayiAdedi[20] = "23 Elemanlı";
		rastgeleSayiAdedi[21] = "24 Elemanlı";
		rastgeleSayiAdedi[22] = "25 Elemanlı";
		
		JComboBox comboRandom = new JComboBox(rastgeleSayiAdedi);    
	    
		etiket = new JLabel("Rastgele sayi göster : ");
		etiket.setBounds(10,10,200,25);
		
		comboRandom.setBounds(220,10,130,25);
		
	//	int x = 15;
		int y = 50;
	//	int w = 50;
	//	int h = 20;
	//	int xf = 70;
		int yf = 45;
		
		etiketSayilar.setHorizontalAlignment(JLabel.CENTER);
		etiketSayilar.setVerticalAlignment(JLabel.CENTER);
		etiketSayilar.setBounds(0,y,360,40);
		
		y = y + yf;
		
		JButton buton = new JButton("Göster");
		buton.setBounds(140,y,100,20);
		 
		buton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				
				
				String data = (String) comboRandom.getItemAt(comboRandom.getSelectedIndex());  
				int elemanSayisi = (comboRandom.getSelectedIndex())+3; // en az üç elemanli olmasini istiyoruz.
				
				// comboBox'tan gelen degeri yazdiriyoruz consome'a
				System.out.println("\n\n"+data+" -> "+elemanSayisi+" ELAMAN\n");
				
			//	RandomSayiUret(elemanSayisi);
				
				etiketSayilar.setText(""+RandomSayiUret(elemanSayisi));				
				
				//ArrayList'i siliyoruz. Silmezsek ekleyerek devam eder.
				//ve biz sürekli ayni elemanlari görürüz.
				rastgeleSayiListesi.removeAll(rastgeleSayiListesi);
				
			}
			
		});
		 
		 panel.add(etiket);
		 panel.add(comboRandom);
		 panel.add(etiketSayilar);
		 
		 panel.add(buton);
		
		 return panel;
		
	}
	
}