/**
 * LapisClass v2.2
 * Java Sınıf Takip Asistanı
 * 
 * Java Blackboard YouTube kanali üzerinden yayinlandi : Kasim / 2023
 * https://www.youtube.com/@javablackboard
 * 
 * Bu kodlar GPL altında yayınlanan bir Java yazılımıdır.
 * GPL-3.0-or-later olarak lisanslanmıştır.
 * 
 * CC BY-NC-SA Atıf-GayriTicari-AynıLisanslaPaylaş (Attribution-NonCommercial-ShareAlike)
 * 
 * Added capabilities:
 * ● Ders notlarının TXT dosyasından alınıp sınıf listesinde gösterilmesi eklendi.
 * 
 */

/*
 * 
 * Proje yapısını şu şekilde yapın:
 * 
 * src/JavaSinifAsistani
 * 
 * src/data/*.txt (TXT dosyaları buraya)
 * 
 * src/images/vesikalik*.jpg (vesikalıklar buraya)
 * 
 * src/images/*.jpg (Diğer resimler buraya)
 * 
 * 
 * */


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class JavaSinifAsistani {
	
	public static JPanel anaPanel;
	public static String okulIlIlce = "KADIKÖY";
	public static String okulAdiBirinciSatir = "JAVA BLACKBOARD";
	public static String okulAdiIkinciSatir = "ORTA OKULU";
	
	public static String dersAdi = "Matematik";
	public static String[] sinif = { "5/A", "5/B", "6/A" };
	
	public static String[] kayitDosyasi = new String[6];
	
	public static String[][] listeSube5A;
	public static String[][] listeSube5B;
	public static String[][] listeSube6A;
	
	public static String[][] notlarSube5A;
	public static String[][] notlarSube5B;
	public static String[][] notlarSube6A;
	
	public static JLabel labelOgrenciResmi;
		
	public static int anaPanelYukseklik = 2500;

	public JavaSinifAsistani() {
		
		JFrame frame = new JFrame("LapisClass v2.2 | Java Sınıf Takip Asistanı | Java Blackboard [141]");
		frame.setLayout(null);
		
		durumKontrol();
		
		anaPanel = new JPanel();
		anaPanel.setLayout(null);
		anaPanel.setBackground(background("anaPanel"));
		anaPanel.setPreferredSize(new Dimension(900, anaPanelYukseklik));
		
		anaPanel.add(menuPaneli());
		anaPanel.add(okulTabelaPaneli());
		anaPanel.add(karsilamaPaneli());
		
		JScrollPane anaPanelScroll = new JScrollPane(anaPanel);
		anaPanelScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		anaPanelScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		anaPanelScroll.setBounds(50, 50, 900, 600);
		
		frame.add(anaPanelScroll);
		
		frame.setSize(1000, 722);
		frame.setLocationRelativeTo(null);
		frame.getContentPane().setBackground(background("frame"));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setVisible(true);
	}
	
	public static void durumKontrol() {
		
		// Bu void türü metod program ilk açıldığında TXT dosya kontrolü yapar.
		// Eğer TXT dosyalarımız yoksa program hatasız çalışsın diye
		// önce onları oluşturur.
		
		kayitDosyasi[0] = "ogrenciBilgileri5A.txt";
		kayitDosyasi[1] = "ogrenciBilgileri5B.txt";
		kayitDosyasi[2] = "ogrenciBilgileri6A.txt";
		kayitDosyasi[3] = "ogrenciNotlari5A.txt";
		kayitDosyasi[4] = "ogrenciNotlari5B.txt";
		kayitDosyasi[5] = "ogrenciNotlari6A.txt";
        
		String dosyaYolu = "src/data/"; // Dosyaların bulunduğu dizin yolu
        
        for (String dosya : kayitDosyasi) {
            File dosyaObjesi = new File(dosyaYolu + dosya);
            
            if (!dosyaObjesi.exists()) {
                try {
                    dosyaObjesi.createNewFile();
                    System.out.println(dosya + " dosyası oluşturuldu.");
                } catch (IOException e) {
                    System.err.println("Hata: " + e.getMessage());
                }
            }
        }
        
        // Dosya içinde veri varsa String[][] diziye alalim 
        
        String dosyaListe5A = dosyaYolu + "ogrenciBilgileri5A.txt";
        String dosyaListe5B = dosyaYolu + "ogrenciBilgileri5B.txt";
        String dosyaListe6A = dosyaYolu + "ogrenciBilgileri6A.txt";
        
        ArrayList<String[]> liste5A = new ArrayList<>();
        ArrayList<String[]> liste5B = new ArrayList<>();
        ArrayList<String[]> liste6A = new ArrayList<>();
        
        // 5A Sınıf Listesini aliyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe5A))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                liste5A.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 5A String[][] dizisine aktaralim
        listeSube5A = new String[liste5A.size()][];
        liste5A.toArray(listeSube5A);
        
        
        
        // 5B Sınıf Listesini aliyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe5B))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                liste5B.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 5B String[][] dizisine aktaralim
        listeSube5B = new String[liste5B.size()][];
        liste5B.toArray(listeSube5B);

        
        
        // 6A Sınıf Listesini aliyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaListe6A))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                liste6A.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 6A String[][] dizisine aktaralim
        listeSube6A = new String[liste6A.size()][];
        liste6A.toArray(listeSube6A);
        
        
        // Simdide ögrenci notlatini aliyoruz.
        String dosyaNot5A = dosyaYolu + "ogrenciNotlari5A.txt";
        String dosyaNot5B = dosyaYolu + "ogrenciNotlari5B.txt";
        String dosyaNot6A = dosyaYolu + "ogrenciNotlari6A.txt";
        
        ArrayList<String[]> not5A = new ArrayList<>();
        ArrayList<String[]> not5B = new ArrayList<>();
        ArrayList<String[]> not6A = new ArrayList<>();
        
        
        // 5A Sınıf Notlarını alıyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot5A))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                not5A.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 5A String[][] dizisine aktaralim
        notlarSube5A = new String[not5A.size()][];
        not5A.toArray(notlarSube5A);
        
        
        
        
        // 5B Sınıf Notlarını alıyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot5B))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                not5B.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 5B String[][] dizisine aktaralim
        notlarSube5B = new String[not5B.size()][];
        not5B.toArray(notlarSube5B);
        
        
        
        
        // 6A Sınıf Notlarını alıyoruz.
        try (BufferedReader br = new BufferedReader(new FileReader(dosyaNot6A))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] ogrenciBilgileri = line.split(",");
                not6A.add(ogrenciBilgileri);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Dosyadan okunan verileri 6A String[][] dizisine aktaralim
        notlarSube6A = new String[not6A.size()][];
        not6A.toArray(notlarSube6A);
        

        
        
        
    }
	
	public static JPanel menuPaneli() {
		
		// Menümüzü bu panel ile gösteriyoruz.
		// butonlarimizin oldugu pabel.
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("menuPaneli"));
		panel.setBounds(20, 20, 150, 400);
		
		int startX = 10;
		int startY = 20;
		int x = startX;
		int y = startY;
		int genislik = 130;
		int yukseklik = 30;
		int farkX = 0;
		int farkY = 35;
		
		JLabel labelDersAdi = new JLabel(dersAdi);
		labelDersAdi.setFont(font("labelDersAdi"));
		labelDersAdi.setHorizontalAlignment(JLabel.CENTER);
		labelDersAdi.setBounds(0, y, 150, yukseklik);
		y = y + farkY;
		
		JButton butonOgrenciKayit = new JButton("Öğrenci Kayıt");
		butonOgrenciKayit.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonNotGir5A = new JButton("5/A Not Gir");
		butonNotGir5A.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonNotGir5B = new JButton("5/B Not Gir");
		butonNotGir5B.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonNotGir6A = new JButton("6/A Not Gir");
		butonNotGir6A.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonListe5A = new JButton("5/A Liste");
		butonListe5A.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonListe5B = new JButton("5/B Liste");
		butonListe5B.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		JButton butonListe6A = new JButton("6/A Liste");
		butonListe6A.setBounds(x, y, genislik, yukseklik);
		y = y + farkY;
		
		
		
		butonOgrenciKayit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(ogrenciKayitPaneli());
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonListe5A.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(sinifListesiPaneli(0));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonListe5B.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(sinifListesiPaneli(1));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonListe6A.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(sinifListesiPaneli(2));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonNotGir5A.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(notGirDuzenle(notlarSube5A));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonNotGir5B.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(notGirDuzenle(notlarSube5B));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		butonNotGir6A.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(notGirDuzenle(notlarSube6A));
				
				anaPanel.repaint();
				anaPanel.revalidate();
				
			}
		});
		
		panel.add(labelDersAdi);
		panel.add(butonOgrenciKayit);
		
		
		// Bu kısım dosya varsa butonların eklenmesi gerektiğini kontrol eder. 
		// Eğer dosya varsa (ve içeriği boş değilse), 
		// ilgili butonları Ekleyelim.
		// Eğer dosya yoksa veya içeriği boşsa buton eklemesi yapılmayacak.
		String dosyaYolu = "src/data/";

        for (String dosyaAdi : kayitDosyasi) {
            
        	Path dosyaYoluNesnesi = Paths.get(dosyaYolu + dosyaAdi);
        	
        	// dosyaVarMi(dosyaYoluNesnesi) metodu bize true/false döndürür.
            if (dosyaVarMi(dosyaYoluNesnesi)) {
                // Dosya varsa ilgili butonu ekrana ekleyelim.
            	switch (dosyaAdi) {
            	
            	case "ogrenciBilgileri5A.txt" : 
            		panel.add(butonListe5A);
            		break;
            	
            	case "ogrenciBilgileri5B.txt" : 
            		panel.add(butonListe5B);
            		break;
            		
            	case "ogrenciBilgileri6A.txt" : 
                	panel.add(butonListe6A);
                	break;
                	
            	case "ogrenciNotlari5A.txt" : 
            		panel.add(butonNotGir5A);
            		break;
            		
            	case "ogrenciNotlari5B.txt" : 
            		panel.add(butonNotGir5B);
            		break;
            		
            	case "ogrenciNotlari6A.txt" : 
            		panel.add(butonNotGir6A);
            		break;
            	}
            }
        }
        
		return panel;
	}
	
	public static boolean dosyaVarMi(Path dosyaYolu) {
		
		boolean varYok = false;
		
        try {
        	varYok = Files.exists(dosyaYolu) && Files.isReadable(dosyaYolu) && Files.size(dosyaYolu) > 0;
		} catch (IOException e) {
			e.printStackTrace();
		}
        
        return varYok;
    }
	
	public static JPanel okulTabelaPaneli() {

		// Adından da anlaşılacağı üzere okul tabelasını göstermeye yarayan panel.
		// images klasöründen kurumsalBosTabela.jpg dosyasını alıp
		// üzerine okul ismini yazıyoruz.
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("logoPaneli"));
		panel.setBounds(190, 20, 670, 150);
		
		// Bos okul tabelasini ImageIcon'a ekliyoruz.
		ImageIcon okulTabelaIcon = new ImageIcon("src/images/kurumsalBosTabela.jpg");
        
        // JLabel'a bos tabelanin ImageIcon'unu ekleyelim
        JLabel labelOkulAdiTabela = new JLabel(okulTabelaIcon);
        labelOkulAdiTabela.setBounds(0, 0, 670, 150);
        
        JLabel labelOkulIlIlce = new JLabel(okulIlIlce);
        labelOkulIlIlce.setFont(font("labelOkulIlIlce"));
        labelOkulIlIlce.setBounds(160, 20, 510, 35);

        JLabel labelOkulAdi = new JLabel(okulAdiBirinciSatir);
        labelOkulAdi.setFont(font("labelOkulIsmi"));
        labelOkulAdi.setBounds(160, 65, 510, 35);
        
        JLabel labelOkulAdi2 = new JLabel(okulAdiIkinciSatir);
        labelOkulAdi2.setFont(font("labelOkulIsmi"));
        labelOkulAdi2.setBounds(160, 95, 510, 35);
		
		panel.add(labelOkulIlIlce);
		panel.add(labelOkulAdi);	
		panel.add(labelOkulAdi2);	
		panel.add(labelOkulAdiTabela);
		
		return panel;
		
	}
	
	public static JPanel karsilamaPaneli() {

		// Uygulama ilk çalıştığında boş gelen içerik paneli.
		// Belki bir karşılama mesajı olabilir :)
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("icerikPaneli"));
		
		JLabel labelKarsilamaMesaji = new JLabel("Hoşgeldiniz. 5/A   5/B   6/A   Sınıf işlemleri");
		labelKarsilamaMesaji.setFont(font("labelOgrenciAdSoyad"));
		labelKarsilamaMesaji.setBounds(50, 50, 500, 30);
		
		panel.add(labelKarsilamaMesaji);
		
		panel.setBounds(190, 190, 670, 400);
		
		return panel;
	}
	
	public static JPanel ogrenciKayitPaneli() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("icerikPaneli"));
		panel.setBounds(190, 190, 670, 500);
		
		int startX = 20;
		int startY = 20;
		int x = startX;
		int y = startY;
		int genislikLabel = 150;
		int genislikButon = 100;
		int genislikField = 350;
		int yukseklik = 35; 
		int farkX = 10;
		int farkY = 40;
		
		// Resmi bir JLabel içinde görüntüleyelim
        labelOgrenciResmi = new JLabel(vesikalik105x135 ("src/images/defaultOgrenciVesikalik.jpg"));
        labelOgrenciResmi.setBounds(550, 20, 105, 135);
		
		// Sınıf, ad, soyad, öğrenci numarası gibi bilgilerin alinmasi burada yapilacak.
		JLabel labelSinif = new JLabel("Öğrencinin Sınıfı:");
		labelSinif.setFont(font("labelRegular"));
		labelSinif.setHorizontalAlignment(JLabel.RIGHT);
		labelSinif.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		
		JComboBox comboSinif = new JComboBox(sinif);
		comboSinif.setFont(font("labelRegular"));
		comboSinif.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelOgrenciNo = new JLabel("Öğrenci No:");
		labelOgrenciNo.setFont(font("labelRegular"));
		labelOgrenciNo.setHorizontalAlignment(JLabel.RIGHT);
		labelOgrenciNo.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		JTextField fieldOgrenciNo = new JTextField();
		fieldOgrenciNo.setFont(font("labelRegular"));
		fieldOgrenciNo.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelOgrenciAdi = new JLabel("Öğrenci Adı:");
		labelOgrenciAdi.setFont(font("labelRegular"));
		labelOgrenciAdi.setHorizontalAlignment(JLabel.RIGHT);
		labelOgrenciAdi.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		
		JTextField fieldOgrenciAdi = new JTextField();
		fieldOgrenciAdi.setFont(font("labelRegular"));
		fieldOgrenciAdi.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelOgrenciSoyadi = new JLabel("Öğrenci Soyadı:");
		labelOgrenciSoyadi.setFont(font("labelRegular"));
		labelOgrenciSoyadi.setHorizontalAlignment(JLabel.RIGHT);
		labelOgrenciSoyadi.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		JTextField fieldOgrenciSoyadi = new JTextField();
		fieldOgrenciSoyadi.setFont(font("labelRegular"));
		fieldOgrenciSoyadi.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelResimSec = new JLabel("Öğrenci Resmi:");
		labelResimSec.setFont(font("labelRegular"));
		labelResimSec.setHorizontalAlignment(JLabel.RIGHT);
		labelResimSec.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		// Vesikalik için dosya seçiciyi oluşturuyoruz  
        JFileChooser fileChooser = new JFileChooser();
        
        // İlk açılışta masaüstünü varsayılan dizin olarak ayarlayalım
        // ama vesikalık fotograflarin hepsi de src/images/vesikalik/ klasörü içinde olsun.
        // vesikalik klasörü içinden resim seçin.
        // Lunux Mac OS X ve Windows isletim sistemlerinde dosya yollari farkli olacagi için
        // proje içinden bir klasör gösterdik dersimizde.
        String desktopPath = System.getProperty("user.home") + File.separator + "Desktop" ;
        fileChooser.setCurrentDirectory(new File(desktopPath));

        // Dosya seçiciyi açma düğmesi
        JButton butonResimSec = new JButton("Resim Seç");
        butonResimSec.setFont(font("labelRegular"));
        butonResimSec.setBounds(x, y, genislikButon, yukseklik);
        x = x + genislikButon + 10;
        
        JTextField fieldDosyaAdi = new JTextField("dosyaAdi.jpg");
        fieldDosyaAdi.setEditable(false);
        fieldDosyaAdi.setFont(font("labelRegular"));
        // Metin rengini GRI ayarlayalim ki editible FALSE oldugu anlasilsin.
        fieldDosyaAdi.setForeground(Color.GRAY);
        fieldDosyaAdi.setBounds(x, y, genislikField-(genislikButon+10), yukseklik);
        x = startX;
    	y = y + farkY;
    	
    	JLabel labelOgrenciDogumYili = new JLabel("Öğrenci Doğum Yılı:");
    	labelOgrenciDogumYili.setFont(font("labelRegular"));
    	labelOgrenciDogumYili.setHorizontalAlignment(JLabel.RIGHT);
    	labelOgrenciDogumYili.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		String[] yil = {"2008" ,"2009", "2010", "2011", "2012"};
		
		JComboBox comboOgrenciDogumYili = new JComboBox(yil);
		comboOgrenciDogumYili.setFont(font("labelRegular"));
		comboOgrenciDogumYili.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelOgrenciCinsiyet = new JLabel("Öğrencinin Cinsiyeti:");
		labelOgrenciCinsiyet.setFont(font("labelRegular"));
		labelOgrenciCinsiyet.setHorizontalAlignment(JLabel.RIGHT);
		labelOgrenciCinsiyet.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		String[] cinsiyet = {"Erkek", "Kız"};
		
		JComboBox comboCinsiyet = new JComboBox(cinsiyet);
		comboCinsiyet.setFont(font("labelRegular"));
		comboCinsiyet.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelEpostaAdresi = new JLabel("Öğrenci Eposta:");
		labelEpostaAdresi.setFont(font("labelRegular"));
		labelEpostaAdresi.setHorizontalAlignment(JLabel.RIGHT);
		labelEpostaAdresi.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		JTextField fieldEpostaAdresi = new JTextField();
		fieldEpostaAdresi.setFont(font("labelRegular"));
		fieldEpostaAdresi.setBounds(x, y, genislikField, yukseklik);
		x = startX;
		y = y + farkY;
		
		JLabel labelTelefonNumarasi = new JLabel("Öğrenci Telefon:");
		labelTelefonNumarasi.setFont(font("labelRegular"));
		labelTelefonNumarasi.setHorizontalAlignment(JLabel.RIGHT);
		labelTelefonNumarasi.setBounds(x, y, genislikLabel, yukseklik);
		x = startX + farkX + genislikLabel;
		
		JTextField fieldTelefonNumarasi = new JTextField();
		fieldTelefonNumarasi.setFont(font("labelRegular"));
		fieldTelefonNumarasi.setBounds(x, y, genislikField, yukseklik);
	//	x = startX;
		y = y + farkY + 10;  // Son buton için 10 fark ekledik.
    	
    	JButton butonKaydet = new JButton("Kaydet");
		butonKaydet.setFont(font("labelRegular"));
		butonKaydet.setBounds(x, y, genislikButon, yukseklik);
    		
        butonResimSec.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            	panel.remove(labelOgrenciResmi);
            	
            	String secilenDosyaYolu = "src/images/hata.jpg";
            	
            	int returnValue = fileChooser.showOpenDialog(null);

                // Kullanıcı bir dosya seçtiyse
                if (returnValue == JFileChooser.APPROVE_OPTION) {
                    // Seçilen dosyanın yolunu alın
                    secilenDosyaYolu = fileChooser.getSelectedFile().getPath();
                                        
                    // Burada seçilen dosya yolu ile ne yapmak istiyorsanız yapabilirsiniz
                    // Örneğin, bu yolu öğrenci bilgilerine bağlayabilirsiniz.
                    
                 // Burada seçilen dosya türünü kontrol edin (örneğin, .jpg)
                    if (secilenDosyaYolu.toLowerCase().endsWith(".jpg")) {
                        // Seçilen dosya bir .jpg ise, resmi görüntüleyin
                        labelOgrenciResmi.setIcon(vesikalik105x135(secilenDosyaYolu));
                        
                        File secilenDosya = new File(secilenDosyaYolu);
                        String vesikalikDosyaAdi = secilenDosya.getName();
                        fieldDosyaAdi.setText(vesikalikDosyaAdi);
                                                
                    } else {
                        // Seçilen dosya .jpg değilse, hata mesajı görüntüleyin ve varsayılan resmi gösterin
                        labelOgrenciResmi.setIcon(vesikalik105x135("src/images/hata.jpg"));
                        JOptionPane.showMessageDialog(null, "Geçersiz dosya türü! Sadece .jpg dosyaları desteklenir.", "Hata", JOptionPane.ERROR_MESSAGE);
                    }
                    
                    panel.add(labelOgrenciResmi);
                    
                    panel.revalidate();
                    panel.repaint();
                
                } else {
                	
                	labelOgrenciResmi.setIcon(vesikalik105x135 (secilenDosyaYolu));
                    
                    panel.add(labelOgrenciResmi);
                    
                    panel.revalidate();
                    panel.repaint();
                	
                }
                
                
            }
        });
    	
		butonKaydet.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				
				anaPanel.removeAll();
				
				// Ögrenci bilgileri
				String infoSinif = (String) comboSinif.getSelectedItem();
				String infoNo = fieldOgrenciNo.getText();
				String infoAdi = fieldOgrenciAdi.getText();
				String infoSoyadi = fieldOgrenciSoyadi.getText();
				String infoVesikalik = fieldDosyaAdi.getText();
				String infoDogumyili = (String) comboOgrenciDogumYili.getSelectedItem();
				String infoCinsiyet = (String) comboCinsiyet.getSelectedItem();
				String infoEposta = fieldEpostaAdresi.getText();
				String infoTelefon = fieldTelefonNumarasi.getText();
				
				String formInfo = infoSinif + "," + infoNo + "," + infoAdi + "," + infoSoyadi + ","
						+ infoVesikalik + "," + infoDogumyili + "," + infoCinsiyet + ","
						+ infoEposta + "," + infoTelefon + "\n";
				
				
				try {
					
					String dosyaAdi = "";
										
					if (infoSinif.equals("5/A")) dosyaAdi = "5A";
					if (infoSinif.equals("5/B")) dosyaAdi = "5B";
					if (infoSinif.equals("6/A")) dosyaAdi = "6A";
					
				    FileWriter dosyaOgrenciBilgileri = new FileWriter("src/data/ogrenciBilgileri"+dosyaAdi+".txt", true);
				    BufferedWriter dosyaKayit = new BufferedWriter(dosyaOgrenciBilgileri);

				    // Öğrenci bilgilerini dosyaya yazalım
				    dosyaKayit.write(formInfo);

				    dosyaKayit.close();
				    
				    
				    
				    
				} catch (IOException ex) {
					
				    ex.printStackTrace();
				
				}
				
				String formInfoNot = infoSinif + "," + infoNo + "," + infoAdi + "," + infoSoyadi + ",0" + ",0" + ",0" + "\n";
				
				try {
					
					if (infoSinif.equals("5/A")) {
				    	
				    	FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari5A.txt", true);
					    BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri);

					    // Öğrenci bilgilerini dosyaya yazalım
					    dosyaNotKayit.write(formInfoNot);

					    dosyaNotKayit.close();
					    
					    durumKontrol();
					    
				    } else if (infoSinif.equals("5/B")) {
				    	
				    	FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari5B.txt", true);
					    BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri);

					    // Öğrenci bilgilerini dosyaya yazalım
					    dosyaNotKayit.write(formInfoNot);

					    dosyaNotKayit.close();
					    
				    } else if (infoSinif.equals("6/A")) {
				    	
				    	FileWriter dosyaOgrenciNotBilgileri = new FileWriter("src/data/ogrenciNotlari6A.txt", true);
					    BufferedWriter dosyaNotKayit = new BufferedWriter(dosyaOgrenciNotBilgileri);

					    // Öğrenci bilgilerini dosyaya yazalım
					    dosyaNotKayit.write(formInfoNot);

					    dosyaNotKayit.close();
					    
				    }
				    
				} catch (IOException ex) {
					
				    ex.printStackTrace();
				
				}
				

				comboSinif.setSelectedIndex(0);
				fieldOgrenciNo.setText("");
				fieldOgrenciAdi.setText("");
				fieldOgrenciSoyadi.setText("");
				fieldDosyaAdi.setText("");
				comboOgrenciDogumYili.setSelectedIndex(0);
				comboCinsiyet.setSelectedIndex(0);
				fieldEpostaAdresi.setText("");
				fieldTelefonNumarasi.setText("");
				
				anaPanel.add(menuPaneli());
				anaPanel.add(okulTabelaPaneli());
				anaPanel.add(ogrenciKayitPaneli());
				
				durumKontrol();
				
				anaPanel.revalidate();
				anaPanel.repaint();
				
			}
			
		});
		
		
		panel.add(labelOgrenciResmi);
		
		panel.add(labelOgrenciNo);
		panel.add(fieldOgrenciNo);
		
		panel.add(labelSinif);
		panel.add(comboSinif);
		
		panel.add(labelOgrenciAdi);
		panel.add(fieldOgrenciAdi);
		
		panel.add(labelOgrenciSoyadi);
		panel.add(fieldOgrenciSoyadi);
		
		panel.add(labelResimSec);
		panel.add(butonResimSec);
		panel.add(fieldDosyaAdi);
		
		panel.add(labelOgrenciDogumYili);
		panel.add(comboOgrenciDogumYili);
		
		panel.add(labelOgrenciCinsiyet);
		panel.add(comboCinsiyet);
		
		panel.add(labelEpostaAdresi);
		panel.add(fieldEpostaAdresi);
		
		panel.add(labelTelefonNumarasi);
		panel.add(fieldTelefonNumarasi);
		
		panel.add(butonKaydet);
		
		
		return panel;
	}
	
	public static JPanel sinifListesiPaneli(int sinif) {
		
		// integer deger alip ilgili sinifin ogrenci listesini gosterecegiz.
		// parametre : 0 - 5/A
		// parametre : 1 - 5/B
		// parametre : 2 - 6/A
		
		String sube = "";
		int mevcudiyet = 0;
		String[][] ilgiliSinifListesi = null;
		
		// Notlar için bu diziye ihtiyacimiz var.
		String[][] ilgiliSinifNotlari = null;
	
		
		switch (sinif) {
		
		case 0 : 
			sube = "5/A";
			mevcudiyet = listeSube5A.length;
			ilgiliSinifListesi = new String[mevcudiyet][9];
			ilgiliSinifListesi = listeSube5A;
			ilgiliSinifNotlari = new String[mevcudiyet][9];;
			ilgiliSinifNotlari = notlarSube5A;
			break;
		
		case 1 :
			sube = "5/B";
			mevcudiyet = listeSube5B.length;
			ilgiliSinifListesi = new String[mevcudiyet][9];
			ilgiliSinifListesi = listeSube5B;
			ilgiliSinifNotlari = new String[mevcudiyet][9];;
			ilgiliSinifNotlari = notlarSube5B;
			break;
		
		case 2 :
			sube = "6/A";
			mevcudiyet = listeSube6A.length;;
			ilgiliSinifListesi = new String[mevcudiyet][9];
			ilgiliSinifListesi = listeSube6A;
			ilgiliSinifNotlari = new String[mevcudiyet][9];;
			ilgiliSinifNotlari = notlarSube6A;
			break;
		
		}
		
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("icerikPaneli"));
		panel.setBounds(190, 190, 670, anaPanelYukseklik-210);  
		// -210 ile içerik panelinin anaPanelin içinde kalmasini sagliyoruz.
		
		int startX = 20;
		int startY = 20;
		int x = startX;
		int y = startY;
		int genislikLabel = 150;
		int genislikButon = 100;
		int genislikField = 350;
		int yukseklik = 35; 
		int farkX = 10;
		int farkY = 40;
		
		File dosyaSubeKodu = new File("src/images/SinifSube.jpg");
		Image imageYuklenenSubeKodu = null;
		try {
			imageYuklenenSubeKodu = ImageIO.read(dosyaSubeKodu);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		ImageIcon imageIconSubeKodu = new ImageIcon(imageYuklenenSubeKodu);
		JLabel labelSubeKoduTabela = new JLabel(imageIconSubeKodu);
		labelSubeKoduTabela.setBounds(20, 20, 320, 96);
		
		JLabel labelSinifSubeKodu = new JLabel(sube);
		labelSinifSubeKodu.setFont(font("labelSubeKoduTabela"));
		labelSinifSubeKodu.setBounds(50, 42, 100, 50);
		
		JLabel labelSinifMevcudu = new JLabel("Sınıf Mevcudu");
		labelSinifMevcudu.setFont(font("labelSubeMevcuduTabela"));
		labelSinifMevcudu.setHorizontalAlignment(JLabel.CENTER);
		labelSinifMevcudu.setBounds(150, 30, 200, 20);
		
		JLabel labelSinifSubeMevcudu = new JLabel(""+mevcudiyet);
		labelSinifSubeMevcudu.setFont(font("labelSubeKoduTabela"));
		labelSinifSubeMevcudu.setHorizontalAlignment(JLabel.CENTER);
		labelSinifSubeMevcudu.setBounds(150, 50, 200, 50);
				
		// Ogrencilerin vesikalik fotograflarinin yolu
		String vesikalikYolu = "src/images/vesikalik/";  // dosyaismi.jpg
		
		JLabel[] labelOgrenciVesikalik = new JLabel[mevcudiyet];
		JLabel[] labelOgrenciAdSoyad = new JLabel[mevcudiyet];
		JLabel[] labelOgrenciNo = new JLabel[mevcudiyet];
		JLabel[] labelOgrenciInfo = new JLabel[mevcudiyet];
		
		// Notlarin gösterimi için JLabel
		JLabel[] labelOgrenciNot = new JLabel[mevcudiyet];
		
		mevcudiyet = ilgiliSinifListesi.length;
		
		for (int i=0 ; i<mevcudiyet ; i++) {
						
			labelOgrenciVesikalik[i] = new JLabel(vesikalik105x135 (vesikalikYolu+ilgiliSinifListesi[i][4]));
			labelOgrenciVesikalik[i].setBounds(20, 130+(i*155), 105, 135);
			
			panel.add(labelOgrenciVesikalik[i]);
			
			labelOgrenciAdSoyad[i] = new JLabel(ilgiliSinifListesi[i][2] + " " + ilgiliSinifListesi[i][3]);
			labelOgrenciAdSoyad[i].setFont(font("labelOgrenciAdSoyad"));
			labelOgrenciAdSoyad[i].setBounds(135, 130+(i*155), 500, 30);
			
			panel.add(labelOgrenciAdSoyad[i]);
			
			labelOgrenciNo[i] = new JLabel(ilgiliSinifListesi[i][1]);
			labelOgrenciNo[i].setFont(font("labelSubeKoduTabela"));
			labelOgrenciNo[i].setBounds(135, 170+(i*155), 105, 50);
			
			panel.add(labelOgrenciNo[i]);
			
			String labelOgrenciInfoSatiri =	ilgiliSinifListesi[i][5] + " / "
											+ ilgiliSinifListesi[i][6] + " / "
											+ ilgiliSinifListesi[i][7] + " / " 
											+ ilgiliSinifListesi[i][8];
			
			labelOgrenciInfo[i] = new JLabel(labelOgrenciInfoSatiri);
			labelOgrenciInfo[i].setFont(font("labelOgrenciInfo"));
			labelOgrenciInfo[i].setBounds(135, 240+(i*155), 500, 30);
			
			panel.add(labelOgrenciInfo[i]);
			
			// Üç notu alıp ortalamasını hesaplıyoruz.
			// Kayıtlarımız String olduğu için int'e dönüştürüyoruz.
			int not1 = Integer.parseInt(ilgiliSinifNotlari[i][4]);  // index 4 birinci sınav notu.
			int not2 = Integer.parseInt(ilgiliSinifNotlari[i][5]);  // index 5 ikici sınav notu.
			int not3 = Integer.parseInt(ilgiliSinifNotlari[i][6]);  // index 6 üçüncü sınav notu.
			double ortalama = (not1+not2+not3)/3.0;  // Ortalamayi aliyoruz.
			int yuvarlanmisOrtalama = (int) Math.round(ortalama); // yuvarlama yapiyoruz.
			
			System.out.print(ortalama + " -> " + yuvarlanmisOrtalama + "\n");
			
			labelOgrenciNot[i] = new JLabel(not1 + " " + not2 + " " + not3 + " " + yuvarlanmisOrtalama);
			labelOgrenciNot[i].setFont(font("labelOgrenciNotlar"));
			labelOgrenciNot[i].setForeground(background("sinavNotu"));
			labelOgrenciNot[i].setBounds(250, 130+(i*155), 420, 135);
			
			panel.add(labelOgrenciNot[i]);
			
		}
		
        panel.add(labelSinifSubeKodu);
        panel.add(labelSinifMevcudu);
        panel.add(labelSinifSubeMevcudu);
        
        panel.add(labelSubeKoduTabela);
		
		return panel;
	}
	
	public static JPanel notGirDuzenle(String[][] sinifNot) {

		// Iki boyutlu Sitring[][] dizi ile sinifin not listesini gosterecegiz.
		
		// Dizinin ilk elemani yani inde : [0][0] subeyi veriyor.
		String sinifSubesi = sinifNot[0][0];
		int sinifMevcudu = sinifNot.length;
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(background("icerikPaneli"));
		panel.setBounds(190, 190, 670, anaPanelYukseklik-210);  
		
		int startX = 20;
		int startY = 130;
		int x = startX;
		int y = startY;
		int genislikLabel = 250;
		int genislikButon = 100;
		int genislikField = 60;
		int yukseklik = 35; 
		int farkX = 10;
		int farkY = 40;
		
		File dosyaSubeKodu = new File("src/images/SinifSube.jpg");
		Image imageYuklenenSubeKodu = null;
		try {
			imageYuklenenSubeKodu = ImageIO.read(dosyaSubeKodu);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		ImageIcon imageIconSubeKodu = new ImageIcon(imageYuklenenSubeKodu);
		JLabel labelSubeKoduTabela = new JLabel(imageIconSubeKodu);
		labelSubeKoduTabela.setBounds(20, 20, 320, 96);
		
		JLabel labelSinifSubeKodu = new JLabel(sinifSubesi);
		labelSinifSubeKodu.setFont(font("labelSubeKoduTabela"));
		labelSinifSubeKodu.setBounds(50, 42, 100, 50);
		
		JLabel labelSinifMevcudu = new JLabel("Sınıf Mevcudu");
		labelSinifMevcudu.setFont(font("labelSubeMevcuduTabela"));
		labelSinifMevcudu.setHorizontalAlignment(JLabel.CENTER);
		labelSinifMevcudu.setBounds(150, 30, 200, 20);
		
		JLabel labelSinifSubeMevcudu = new JLabel(""+sinifMevcudu);
		labelSinifSubeMevcudu.setFont(font("labelSubeKoduTabela"));
		labelSinifSubeMevcudu.setHorizontalAlignment(JLabel.CENTER);
		labelSinifSubeMevcudu.setBounds(150, 50, 200, 50);
		
		JButton butonNotKaydet = new JButton("Kaydet");
		butonNotKaydet.setBounds(550, 80, genislikButon, yukseklik);
		
		
			
		JLabel[] labelOgrenciAdSoyadNo = new JLabel[sinifMevcudu];
		JLabel[] labelOgrenciNo = new JLabel[sinifMevcudu];
		
		// Bu String[]'ler actionListener'da da lazim olacak.
		String[] ogrenciOkulNo = new String[sinifMevcudu];
		String[] ogrenciAdi = new String[sinifMevcudu];
		String[] ogrenciSoyadi = new String[sinifMevcudu];
		
		
		// Sinav notu girisleri
		JTextField[] fieldSinav1 = new JTextField[sinifMevcudu];
		JTextField[] fieldSinav2 = new JTextField[sinifMevcudu];
		JTextField[] fieldSinav3 = new JTextField[sinifMevcudu];
		
		
		for(int i=0 ; i<sinifMevcudu ; i++) {
			
			ogrenciOkulNo[i] = new String(sinifNot[i][1]);
			ogrenciAdi[i] = new String(sinifNot[i][2]);
			ogrenciSoyadi[i] = new String(sinifNot[i][3]);
			
			labelOgrenciAdSoyadNo[i] = new JLabel(ogrenciOkulNo[i] + " " + ogrenciAdi[i] +" "+ ogrenciSoyadi[i]);
			labelOgrenciAdSoyadNo[i].setFont(font("labelOgrenciNotu"));
			labelOgrenciAdSoyadNo[i].setBounds(x, y+(i*40), genislikLabel, 30);
			
			panel.add(labelOgrenciAdSoyadNo[i]);
			
			x = x+genislikLabel+farkX;
			
			fieldSinav1[i] = new JTextField(sinifNot[i][4]+"");
			fieldSinav1[i].setFont(font("labelOgrenciNotu"));
			fieldSinav1[i].setHorizontalAlignment(JTextField.CENTER);
			fieldSinav1[i].setBounds(x, y+(i*40), genislikField, 30);
			
			panel.add(fieldSinav1[i]);
			
			x = x+genislikField+farkX;
			
			fieldSinav2[i] = new JTextField(sinifNot[i][5]+"");
			fieldSinav2[i].setFont(font("labelOgrenciNotu"));
			fieldSinav2[i].setHorizontalAlignment(JTextField.CENTER);
			fieldSinav2[i].setBounds(x, y+(i*40), genislikField, 30);
			
			panel.add(fieldSinav2[i]);
			
			x = x+genislikField+farkX;
			
			fieldSinav3[i] = new JTextField(sinifNot[i][6]+"");
			fieldSinav3[i].setFont(font("labelOgrenciNotu"));
			fieldSinav3[i].setHorizontalAlignment(JTextField.CENTER);
			fieldSinav3[i].setBounds(x, y+(i*40), genislikField, 30);
			
			panel.add(fieldSinav3[i]);
			
			x = startX;
			
			
		}
		
		
		panel.add(labelSinifSubeKodu);
		panel.add(labelSinifMevcudu);
		panel.add(labelSinifSubeMevcudu);
		panel.add(labelSubeKoduTabela);
		
		panel.add(butonNotKaydet);
		
		butonNotKaydet.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// Dosyanın yolu
		        String dosyaYolu = "";
		        
		        if (sinifSubesi.equals("5/A")) dosyaYolu = "src/data/ogrenciNotlari5A.txt";
		        if (sinifSubesi.equals("5/B")) dosyaYolu = "src/data/ogrenciNotlari5B.txt";
		        if (sinifSubesi.equals("6/A")) dosyaYolu = "src/data/ogrenciNotlari6A.txt";
		        				
				// Ögrenci sinav bilgileri
				String[] yaziliNotu1 = new String[sinifMevcudu];
				String[] yaziliNotu2 = new String[sinifMevcudu];
				String[] yaziliNotu3 = new String[sinifMevcudu];
								
				for (int i = 0; i < sinifMevcudu; i++) {
					
		            // İlgili JTextField'lardan verileri alıyoruz
		            yaziliNotu1[i] = fieldSinav1[i].getText();
		            yaziliNotu2[i] = fieldSinav2[i].getText();
		            yaziliNotu3[i] = fieldSinav3[i].getText();
		        }
				
				// Eski dosyayı siliyoruz.
	            try {
					Files.delete(Path.of(dosyaYolu));
				} catch (IOException e1) {
					e1.printStackTrace();
				}
	            	            
	            try {
					
				    FileWriter dosyaOgrenciBilgileri = new FileWriter(dosyaYolu, true);
				    BufferedWriter dosyaKayit = new BufferedWriter(dosyaOgrenciBilgileri);
				  				    
				    // Öğrenci notlarini field'lardan alalim:
				    // Öğrenci bilgilerini dosyaya kaydetmek için bir döngü kullanalim
		            for (int i = 0; i < sinifMevcudu; i++) {
		                String satir = sinifSubesi + "," + ogrenciOkulNo[i]+ "," + ogrenciAdi[i] + "," + ogrenciSoyadi[i] + "," + yaziliNotu1[i] + "," + yaziliNotu2[i] + "," + yaziliNotu3[i];
		                dosyaKayit.write(satir);
		                dosyaKayit.newLine(); // Her öğrenci için yeni bir satır ekleyin
		            }

				    dosyaKayit.close();
				    
				} catch (IOException ex) {
					
				    ex.printStackTrace();
				
				}
				
	            durumKontrol();
				
			}
		});
		
		return panel;
		
	}
	
	public static Font font(String fontAlani) {
		
		Font font = new Font("Ubuntu", Font.PLAIN, 15);
		
		switch (fontAlani) {
		
		case "labelRegular" : 
			font = new Font("Ubuntu", Font.PLAIN, 15);
			break;
			
		case "labelDersAdi": 
			font = new Font("Ubuntu", Font.BOLD, 21);
			break;
		
		case "labelOkulIsmi" : 
			font = new Font("Ubuntu", Font.BOLD, 35);
			break;
		
		case "labelSubeKoduTabela": 
			font = new Font("Ubuntu", Font.BOLD, 55);
			break;
		
		case "labelSubeMevcuduTabela": 
			font = new Font("Ubuntu", Font.PLAIN, 17);
			break;
		
		case "labelOgrenciAdSoyad": 
			font = new Font("Ubuntu", Font.PLAIN, 27);
			break;
		
		case "labelOkulIlIlce":
			font = new Font("Ubuntu", Font.PLAIN, 35);
			break;
		
		case "labelOgrenciInfo":
			font = new Font("Ubuntu", Font.PLAIN, 15);
			break;
			
		case "labelOgrenciNotu":
			font = new Font("Ubuntu", Font.PLAIN, 21);
			break;
			
		case "labelOgrenciNotlar":
			font = new Font("Ubuntu", Font.BOLD, 77);  // Notlar için kullanilacak font
			break;
		
		}
		
		return font;
	}
	
	public static Color background(String renkAlani) {
		
		Color color = new Color(109, 63, 140);
		
		switch (renkAlani) {
		
		case "frame" : 
			color = new Color(228, 231, 247);
			break;
		
		case "anaPanel" : 
			color = new Color(217, 158, 50);
			break;
		
		case "menuPaneli" : 
			color = new Color(242, 240, 213);
			break;
		
		case "icerikPaneli" : 
			color = new Color(194, 255, 184);
			break;
		
		case "logoPaneli" : 
			color = new Color(133, 211, 242);
			break;
			
		case "sinavNotu" :  
			color = new Color(150, 43, 9);  // Notlarin rengi
			break;
		
		}
		
		return color;
	}
	
	public static ImageIcon vesikalik105x135 (String dosyaYolu) {
		
		// Bu metod yuklenen vesiklaligin 105x135 pixel olarak
		// yeniden ölçeklendirilmesini saglar.
		// ve resmi ImageIcon olarak return eder..
		File dosyaYuklenenVesikalik = new File(dosyaYolu);
		Image imageYuklenenVesikalik = null;
		try {
			imageYuklenenVesikalik = ImageIO.read(dosyaYuklenenVesikalik);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		int vesikalikGenislik = 105;
        int vesikalikYukseklik = 135;
		Image imageVesiklaik = imageYuklenenVesikalik.getScaledInstance(vesikalikGenislik, vesikalikYukseklik, Image.SCALE_DEFAULT);
        ImageIcon vesikalikSonHali = new ImageIcon(imageVesiklaik);
        
        return vesikalikSonHali;
        
	}
	
	
	public static void main(String[] args) {
		
		new JavaSinifAsistani();
		
	}

}
