elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  swing binario decimal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: swing binario decimal  (Leído 3,639 veces)
winnipu

Desconectado Desconectado

Mensajes: 91


Ver Perfil
swing binario decimal
« en: 18 Mayo 2014, 12:37 pm »

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.
Código:
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 Desconectado

Mensajes: 91


Ver Perfil
Re: swing binario decimal
« Respuesta #1 en: 18 Mayo 2014, 13:46 pm »

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 Desconectado

Mensajes: 91


Ver Perfil
Re: swing binario decimal
« Respuesta #2 en: 19 Mayo 2014, 18:36 pm »

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.

Código:
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 9 Julio 2010, 17:52 pm
por Debci
Pasar decimal a binario
.NET (C#, VB.NET, ASP)
Cuasar 7 8,194 Último mensaje 8 Febrero 2011, 04:00 am
por Cuasar
[BATCH] Decimal > Binario
Scripting
Puntoinfinito 7 9,188 Último mensaje 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 Último mensaje 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 Último mensaje 15 Febrero 2015, 18:24 pm
por DanielPy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines