import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.border.TitledBorder;

public class MathSinifiSignumCompare {

	public MathSinifiSignumCompare() {
        
		JFrame frame = new JFrame("Math Sinifi signum() compare() | Java Blackboard [143]");
		frame.setLayout(null);
		
		JPanel anaPanel = new JPanel();
		anaPanel.setLayout(null);
		anaPanel.setBackground(new Color(188, 198, 206));
		anaPanel.setBounds(30, 30, 900, 458);
		
		anaPanel.add(signumPaneli());
		anaPanel.add(camparePaneli());
		
        frame.add(anaPanel);

        frame.setSize(960, 540);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setVisible(true);
    }

	// Java'da, signum() metodunu kullanarak bir sayının işaretini 
	// kontrol edebiliriz.
	// Negatif Pozitif ve Sıfır için double deger döndürür. 
	// -1.0    1.0        0.0
	public static JPanel signumPaneli() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(230, 223, 217));
		panel.setBounds(30, 30, 400, 180);
		
		TitledBorder titledBorder = BorderFactory.createTitledBorder("Math.signum();");
        panel.setBorder(titledBorder);
		
        JTextField textField = new JTextField();
        textField.setBounds(30, 30, 100, 30);
        
        JLabel labelSonuc = new JLabel("Math.signum();");
        labelSonuc.setBounds(30, 80, 260, 30);
        
        JButton butonKontrol = new JButton("Kontrol");
        butonKontrol.setBounds(30, 130, 100, 30);

        butonKontrol.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    double number = Double.parseDouble(textField.getText());
                    double sign = Math.signum(number);
                    labelSonuc.setText("Math.signum("+ number +"); -> " + sign);
                } catch (NumberFormatException ex) {
                	labelSonuc.setText("Sayı yok!");
                }
            }
        });

        panel.add(textField);
        panel.add(butonKontrol);
        panel.add(labelSonuc);
        
        return panel;
	}

	// compare() Metodu: iki sayının karşılaştırılması için kullanılır ve 
	// bir sayının başka bir sayıya göre Double olarak 
	// büyüklüğünü küçüklüğünü eşitligini döndürür.
	// 1.0         -1.0        0.0
	public static JPanel camparePaneli() {
		
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(new Color(230, 223, 217));
		panel.setBounds(460, 30, 400, 180);
		
		TitledBorder titledBorder = BorderFactory.createTitledBorder("Double.compare(sayi1, sayi2);");
        panel.setBorder(titledBorder);
		
        JTextField textField1 = new JTextField();
        textField1.setBounds(30, 30, 100, 30);
        
        JTextField textField2 = new JTextField();
        textField2.setBounds(160, 30, 100, 30);
        
        JLabel labelSonuc = new JLabel("Double.compare();");
        labelSonuc.setBounds(30, 65, 260, 30);
        
        JLabel labelSonuc2 = new JLabel("Karşılaştırma Bekleniyor.");
        labelSonuc2.setBounds(30, 95, 260, 30);
        
        JButton butonKontrol = new JButton("Kontrol");
        butonKontrol.setBounds(30, 130, 100, 30);

        butonKontrol.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            	try {
                
            		double sayi1 = Double.parseDouble(textField1.getText());
                    double sayi2 = Double.parseDouble(textField2.getText());
                    double sign = Double.compare(sayi1, sayi2);
                    labelSonuc.setText("Double.compare("+ sayi1 +", " + sayi2 +"); -> " + sign);
                
                    if (sign > 0) {
                    	labelSonuc2.setText(sayi1 + " " + sayi2 + "'den büyüktür.");
                    } else if (sign < 0) {
                    	labelSonuc2.setText(sayi1 + " " + sayi2 + "'den küçüktür.");
                    } else {
                    	labelSonuc2.setText(sayi1 + " " + sayi2 + " ile eşittir.");
                    }
            	} catch (NumberFormatException ex) {
                
            		labelSonuc.setText("Karşılaştırma yok!");
                
            	}
            }
        });

        panel.add(textField1);
        panel.add(textField2);
       
        panel.add(labelSonuc);
        panel.add(labelSonuc2);
       
        panel.add(butonKontrol);
        
        return panel;
	}
	
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new MathSinifiSignumCompare());
    }

}
