Autor
|
Tema: swing binario decimal (Leído 3,639 veces)
|
winnipu
Desconectado
Mensajes: 91
|
Hola, vereis he estado desarrollando un programa que convierte un numero binario en decimal y otro decimal en binario. Una vez logrado por consola he intentado mejorarlo con un gui con swing. Pero como no controlo mucho tengo un error que no se donde se produce con el tema de los actionevent imagino. Os pego codigo a ver si alguien me puede echar un cable. Un saludo. import javax.swing.*;
import java.awt.*; import java.awt.event.*; public class BinDecimal extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L; private JLabel etiqueta,etiqueta2; private JTextField texto,texto2,binario,binario2; private JButton boton,boton2; public ActionListener metodoBoton;
public BinDecimal(String titulo) { super(titulo); texto=new JTextField(10); texto2=new JTextField(10); etiqueta=new JLabel("Escribe en binario para convertir a decimal"); etiqueta2=new JLabel("Escribe en decimal para convertir a binario"); binario=new JTextField("0",10); binario2=new JTextField("0",10); binario.setEditable(false); binario2.setEditable(false); boton=new JButton("Convertir"); boton2=new JButton("Convertir"); boton.setMnemonic(KeyEvent.VK_C); boton.setToolTipText("Convertir a decimal"); boton2.setMnemonic(KeyEvent.VK_C); boton2.setToolTipText("Convertir a binario"); JPanel panel=new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT,4,4)); panel.add(etiqueta); panel.add(texto); panel.add(boton); panel.add(binario); panel.add(etiqueta2); panel.add(texto2); panel.add(boton2); panel.add(binario2); getContentPane().add(panel); boton.addActionListener(this); boton2.addActionListener(this);
}
public void actionPerformed(ActionEvent evento) { int[] array1 = new int[20]; int[] array2 = new int[20]; int i = 0; int j = 0; int resultado1 = 0; int resultado2 = 0; String cadena, cadena2;
int numero = Integer.parseInt(texto.getText());
do{ array1[i] = numero % 10; numero /= 10; resultado1 = array1[i]*(int)Math.pow(2.0, i)+resultado1; i++; } while (numero != 0); cadena = Integer.toString(resultado1); binario.setText(cadena); int numero2 = Integer.parseInt(texto2.getText()); do{ array2[j] = numero2 % 2; numero2 /= 2; resultado2 = array2[j]*(int)Math.pow(10.0, j)+resultado2; j++; } while (numero2 != 0); cadena2 = Integer.toString(resultado2); binario2.setText(cadena2); }
public static void main(String args[]) { BinDecimal programa=new BinDecimal("Convertir de binario a decimal"); programa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); programa.setSize(600,120); programa.setLocation(400,450); programa.setVisible(true); } }
|
|
|
En línea
|
|
|
|
Zoik
Desconectado
Mensajes: 91
|
Hola,
estaría bien que pusieses la trama de error que te da o la línea de código donde te peta.
Un saludo
|
|
|
En línea
|
|
|
|
winnipu
Desconectado
Mensajes: 91
|
Bueno, ya lo he solventado, tema de colocar dos botones con un condicional. El codigo seguramente es mejorable, he usado ArrayList, cambiado varios int por long para que los valores convertibles sean mayores y modificado alguna pequeña cosa. Comparto por si a alguno le es de utilidad y aceptaria que alguien repase el codigo por si ve mejoras del tipo que sean. Una cosa que veo mejorable es que cuando intento convertir un numero decimal superior al millon en binario el resultado no me lo da como binario sino como exponencial y no se a que se puede deber. import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList;
public class BinDecimal extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L; private JLabel etiqueta,etiqueta2; private JTextField texto,texto2,binario,binario2; private JButton boton,boton2; public ActionListener metodoBoton;
public BinDecimal(String titulo) { super(titulo); texto=new JTextField(10); texto2=new JTextField(10); etiqueta=new JLabel("Escribe en binario para convertir a decimal"); etiqueta2=new JLabel("Escribe en decimal para convertir a binario"); binario=new JTextField("0",20); binario2=new JTextField("0",20); binario.setEditable(false); binario2.setEditable(false); boton=new JButton("Convertir"); boton2=new JButton("Convertir"); boton.setMnemonic(KeyEvent.VK_C); boton.setToolTipText("Convertir a decimal"); boton2.setMnemonic(KeyEvent.VK_C); boton2.setToolTipText("Convertir a binario"); JPanel panel=new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT,4,4)); panel.add(etiqueta); panel.add(texto); panel.add(boton); panel.add(binario); panel.add(etiqueta2); panel.add(texto2); panel.add(boton2); panel.add(binario2); getContentPane().add(panel); boton.addActionListener(this); boton2.addActionListener(this);
}
public void actionPerformed(ActionEvent evento) { ArrayList<Long> array1 = new ArrayList<Long>(); ArrayList<Long> array2 = new ArrayList<Long>(); int i = 0; int j = 0; long resto = 0; long resultado1 = 0; long resultado2 = 0; String cadena, cadena2;
if (evento.getSource()==boton) { long numero = Long.parseLong(texto.getText());
do{ resto = numero % 10; array1.add(resto); numero /= 10; resultado1 = array1.get(i)*(long)Math.pow(2.0, i)+resultado1; i++; } while (numero != 0); cadena = Long.toString(resultado1); binario.setText(cadena); } if (evento.getSource()==boton2) { long numero2 = Long.parseLong(texto2.getText()); do{ resto = numero2 % 2; array2.add(resto); numero2 /= 2; resultado2 = array2.get(j)*(long)Math.pow(10.0, j)+resultado2; j++; } while (numero2 != 0); cadena2 = Long.toString(resultado2); binario2.setText(cadena2); } }
public static void main(String args[]) { BinDecimal programa=new BinDecimal("Conversor Binarios y Decimales"); programa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); programa.setSize(720,120); programa.setLocation(200,300); programa.setVisible(true); } }
|
|
« Última modificación: 19 Mayo 2014, 18:41 pm por winnipu »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[ code=C++] Conversor binario-decimal-binario
« 1 2 »
Programación C/C++
|
Chonk
|
11
|
24,254
|
9 Julio 2010, 17:52 pm
por Debci
|
|
|
Pasar decimal a binario
.NET (C#, VB.NET, ASP)
|
Cuasar
|
7
|
8,194
|
8 Febrero 2011, 04:00 am
por Cuasar
|
|
|
[BATCH] Decimal > Binario
Scripting
|
Puntoinfinito
|
7
|
9,188
|
17 Mayo 2019, 13:02 pm
por d.gromero
|
|
|
Convertir en binario a Hex y Decimal.
.NET (C#, VB.NET, ASP)
|
Meta
|
3
|
4,032
|
24 Agosto 2014, 19:46 pm
por Meta
|
|
|
De decimal a binario sumando sólo los bits encendidos [C].
Programación C/C++
|
DanielPy
|
8
|
2,912
|
15 Febrero 2015, 18:24 pm
por DanielPy
|
|