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
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; //Declaracion de variables private static final long serialVersionUID = 1L; private boolean esBinario; private boolean esHexadecimal; private int numeroDecimal; public Convertidor() { super("Convertidor"); //Se crean las etiquetas //Se crean los campos, el primero para ingresar y el otro para imprimir campo2.setEditable(false); //Se crean los botones de Radio y uno normal //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.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); } /** * 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 */ if(campo1.getText().equals("")) { } else { try { 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; }//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 { } } } /** * Metodo que permite seleccionar el tipo de numero a convertir */ if(botonBinario.isSelected()) { esBinario = true; esHexadecimal = false; } else if(botonHexadecimal.isSelected()) { esBinario = false; esHexadecimal = true; } } } }
Saludos