import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;


public class Raizes extends JFrame implements ActionListener
{
	JButton bt_Sair, bt_Calcular, bt_Limpar;
	JPanel Painel_Leste, Painel_Norte, Painel_Centro, Painel_Centro1, Painel_Centro2, Painel_Centro3;
	JTextField tf_Numero, tf_Raiz, tf_Indice;
	public Raizes()
	{
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add("North", Painel_Norte = new JPanel(new FlowLayout(FlowLayout.CENTER)));
		Painel_Norte.add(new JLabel("EXTRAIR RAIZ DE UM NÚMERO"));
		getContentPane().add("Center", Painel_Centro = new JPanel(new GridLayout(4, 1)));
		Painel_Centro.add(new JLabel());//Só para deixar o painel vazio
		Painel_Centro.add(Painel_Centro1 = new JPanel(new FlowLayout(FlowLayout.RIGHT)));
		Painel_Centro1.add(new JLabel("NÚMERO:"));
		Painel_Centro1.add(tf_Numero = new JTextField(15));
		Painel_Centro.add(Painel_Centro2 = new JPanel(new FlowLayout(FlowLayout.RIGHT)));
		Painel_Centro2.add(new JLabel("INDICE DA RAIZ:"));
		Painel_Centro2.add(tf_Indice = new JTextField(15));
		
		Painel_Centro.add(Painel_Centro3 = new JPanel(new FlowLayout(FlowLayout.RIGHT)));
		Painel_Centro3.add( new JLabel ("RAIZ QUADRADA:"));
		Painel_Centro3.add(tf_Raiz  = new JTextField(15));
		tf_Raiz.setEditable(false);
		/////////////////////////
		getContentPane().add("East", Painel_Leste = new JPanel(new GridLayout(4,1)));
		Painel_Leste.add(new JLabel());//Só para deixar o painel vazio
		Painel_Leste.add(bt_Calcular = new JButton ("CALCULAR"));
		Painel_Leste.add(bt_Limpar = new JButton ("LIMPAR"));
		Painel_Leste.add(bt_Sair = new JButton ("SAIR", new ImageIcon("bt_sair.jpg")));
		bt_Sair.addActionListener(this);
		bt_Calcular.addActionListener(this);
		bt_Limpar.addActionListener(this);
		pack();
		setResizable(false);
		setVisible(true);
	}	
	public void actionPerformed (ActionEvent e)
	{
		if(e.getSource()==bt_Sair)
		{
			System.exit(0);
		}
		if(e.getSource()==bt_Calcular)
		{
				double Numero = Double.parseDouble(tf_Numero.getText());
				double indice; 
				double Raiz;	
				
				if(tf_Numero.getText().equals(""))
				{
						JOptionPane.showMessageDialog(null, "Você precisa digitar um valor válido para número ");
				}	
				else
				{
					
						//////////////////////////////
						
						if(tf_Indice.getText().equals(""))
						{
							indice=2;
						}	
						else
						{
							indice = Double.parseDouble(tf_Indice.getText()); 
						}		
						//////////////////////////////////	
						if(Numero < 0)
						{
								tf_Raiz.setText("NÃO EXISTEM RAIZES QUADRADAS DE NUMEROS NEGATIVOS");
						}
						else if(indice==2)
						{
								Raiz = Math.sqrt(Numero); 
								tf_Raiz.setText(""+Raiz);
						}
						else if(indice==3)
						{
								Raiz = Math.cbrt(Numero); 
								tf_Raiz.setText(""+Raiz);							
						}
						else if(indice > 3)
						{
								Raiz = Math.ceil(Math.pow(Numero, 1/indice)); 
								//O método Math.ceil arredonda o numero para cima
								tf_Raiz.setText(""+Raiz);
																
						}		
				}
		}
			
		
		if(e.getSource()==bt_Limpar)
		{
				tf_Numero.setText("");
				tf_Raiz.setText("");
				tf_Indice.setText("");
		}				
		
		
		
		
	}		
	public static void main (String args [])
	{
		new Raizes();
	}		
}

