Buenas!!
También podrías controlar que solo acepte números.
He modificado algunas cosillas para acortar el código y que solo convierta números. No sé mucho de Java, pero es un buen ejemplo para practicar:
Clase Convertidor
Saludos
También podrías controlar que solo acepte números.
He modificado algunas cosillas para acortar el código y que solo convierta números. No sé mucho de Java, pero es un buen ejemplo para practicar:
Clase Convertidor
Código (java) [Seleccionar]
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Convertidor extends JFrame {
//Declaracion de variables
private static final long serialVersionUID = 1L;
private JLabel etiqueta1;
private JLabel etiqueta2;
private JTextField campo1;
private JTextField campo2;
private JButton botonCalcular;
private JRadioButton botonBinario;
private JRadioButton botonHexadecimal;
private ButtonGroup grupoBotones;
private boolean esBinario;
private boolean esHexadecimal;
private int numeroDecimal;
public Convertidor() {
super("Convertidor");
setLayout(new FlowLayout());
//Se crean las etiquetas
etiqueta1 = new JLabel("Numero a convertir");
etiqueta2 = new JLabel("Numero convertido ");
//Se crean los campos, el primero para ingresar y el otro para imprimir
campo1 = new JTextField(10);
campo2 = new JTextField(10);
campo2.setEditable(false);
//Se crean los botones de Radio y uno normal
botonCalcular = new JButton("Calcular");
botonBinario = new JRadioButton("Binario");
botonHexadecimal = new JRadioButton("Hexadecimal");
//Se crean booleanos necesarios para determinar el tipo de numero a convertir
esBinario = false;
esHexadecimal = false;
numeroDecimal = 0;
//Se crea el grupo de botones de radio y se agregan los botones radio a
//dicho grupo
grupoBotones = new ButtonGroup();
grupoBotones.add(botonCalcular);
grupoBotones.add(botonBinario);
grupoBotones.add(botonHexadecimal);
//Se agregan las etiquetas, campos y botones a la ventana
add(etiqueta1);
add(campo1);
add(etiqueta2);
add(campo2);
add(botonBinario);
add(botonHexadecimal);
add(botonCalcular);
//Se crea instancia AdministradorEventos para controlar los eventos
AdministradorEventos administrador = new AdministradorEventos();
//Se le agregan eventos a los botones a utilizar
botonBinario.addItemListener(administrador);
botonHexadecimal.addItemListener(administrador);
botonCalcular.addActionListener(administrador);
}
private class AdministradorEventos implements ActionListener, ItemListener {
/**
* Metodo que permite calcular el numero numero decimal a binario, hexade
* cimal o viceversa, segun lo que se haya seleccionado en los botones
* de radio
*/
public void actionPerformed(ActionEvent evento) {
String resultado = "";
if(campo1.getText().equals("")) {
JOptionPane.showMessageDialog(null, "No ha ingresado ningun numero", "ERROR", 0);
} else {
try {
numeroDecimal = Integer.parseInt(campo1.getText());
} catch(Exception e) {
JOptionPane.showMessageDialog(null, "Solo números, por favor", "ERROR", 0);
numeroDecimal = 0;
}
if(esBinario) {
while(numeroDecimal != 0) {
resultado += numeroDecimal % 2; //Se concatena
numeroDecimal /= 2;
}
char arregloChar[] = resultado.toCharArray();
resultado = "";
for(int i = 0; i < arregloChar.length; i++) {
resultado += arregloChar[(arregloChar.length-1)-i];
}
campo2.setText(resultado);
} else if(esHexadecimal) {
int resto = 0;
while(numeroDecimal != 0) {
resto = numeroDecimal % 16;
switch(resto) {
case 10:
resultado += "A";
break;
case 11:
resultado += "B";
break;
case 12:
resultado += "C";
break;
case 13:
resultado += "D";
break;
case 14:
resultado += "E";
break;
case 15:
resultado += "F";
break;
default:
resultado += resto;
break;
}//Fin del Switch
numeroDecimal = numeroDecimal / 16;
System.out.println(numeroDecimal);
}//Fin del ciclo While
char arregloChar[] = resultado.toCharArray();
resultado = "";
for(int i = 0; i < arregloChar.length; i++) {
resultado += arregloChar[(arregloChar.length-1)-i];
}
campo2.setText(resultado);
} else {
JOptionPane.showMessageDialog(null,"Seleccione el tipo de numero a convertir","Error", 0);
}
}
}
/**
* Metodo que permite seleccionar el tipo de numero a convertir
*/
public void itemStateChanged(ItemEvent evento) {
if(botonBinario.isSelected()) {
esBinario = true;
esHexadecimal = false;
} else if(botonHexadecimal.isSelected()) {
esBinario = false;
esHexadecimal = true;
}
}
}
}
Saludos