import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

public class ResimdenRenkAl {

    public static JLabel labelImage;
    public static BufferedImage image;

    public ResimdenRenkAl() {
    	
    	JFrame frame = new JFrame("Resimden Renk Kodu Al | Java Blackboard [145]");
    	frame.setLayout(null);
         
        frame.add(resimPaneli());
        
        frame.setSize(940, 482);
    	frame.setLocationRelativeTo(null);
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setResizable(false);
    	frame.setVisible(true);
    }
    
    public static JPanel resimPaneli() {
    	
    	JPanel panel = new JPanel();
    	panel.setBackground(new Color(200, 200, 200));
    	panel.setLayout(null);
    	panel.setBounds(50, 50, 840, 360);
    	
    	JLabel labelRGB = new JLabel("RGB Renk Kodu");
        labelRGB.setBounds(660, 20, 125, 30);
        
        JTextField fieldRGB = new JTextField("Seçim bekleniyor...");
        fieldRGB.setBounds(660, 50, 125, 30);
        
        JLabel labelWebRenk = new JLabel("Web Renk Kodu");
        labelWebRenk.setBounds(660, 120, 125, 30);
        
        JTextField fieldWebRenk = new JTextField("Seçim bekleniyor...");
        fieldWebRenk.setBounds(660, 150, 125, 30);
    	
    	// Resmimizi tanimliyoruz.
        Random rastgele = new Random();
        
        int min = 0; // Minimum değer
        int max = 6; // Maksimum değer
        
        int rastgeleSayi = rastgele.nextInt((max - min) + 1) + min;
        
        try {
			image = ImageIO.read(new File("src/images/resim-"+rastgeleSayi+".jpg"));
		} catch (IOException e1) {
			e1.printStackTrace();
		}

        labelImage = new JLabel(new ImageIcon(image));
        labelImage.setBounds(0, 0, 640, 360);

        labelImage.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                
            	String stringRGB = "";
            	String stringWebRenk = "";
            	
            	int x = e.getX();
                int y = e.getY();
                
                // Kliklenen nokta resmin sınırları içindemi kontrol ediyoruz.
                if (x >= 0 && y >= 0 && x < image.getWidth() && y < image.getHeight()) {
                    
                	Color c = new Color(image.getRGB(x, y));
                    
                    stringRGB = " " + c.getRed() + ", " + c.getGreen() + ", " + c.getBlue();
                    fieldRGB.setText(stringRGB);
                    
                    stringWebRenk = "#" + Integer.toHexString(c.getRGB()).substring(2);
                    fieldWebRenk.setText(stringWebRenk);
                    
                } else {
                    System.out.println("Resim dışı seçim");
                }
               
                
                
            }

            // MouseListener arabirimini kullandığınızda, 
            // arabirimin tüm metodlarını implement etmeniz gerekir.
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

            
        });

        panel.add(labelImage);
        
        panel.add(labelRGB);
        panel.add(fieldRGB);
        
        panel.add(labelWebRenk);
        panel.add(fieldWebRenk);
        
        return panel;
    }

    public static void main(String[] args) {
        new ResimdenRenkAl();
    }
}
