Problema con JLabel con setBackground y setText

Iniciado por d!lan, 29 Septiembre 2013, 06:12 AM

0 Miembros y 1 Visitante están viendo este tema.

d!lan

Hola compañeros
Sucede que necesito hacer una representacion binaria de un numero en forma de "true" y "false" mostrando los bits que ocupa con JLabels y tengo que hacer que los Labels primero todos sean blancos y luego poner en amarillo los ceros que adicionan a la izquierda del numero binario es decir el numero 5 en binario es 101 pero como ocupa 8 bits quedaria 00000101 <---- esto iria en labels pero true y false pero me surgen dos problemas y es que cuando trato de cambiar el color de esta forma
Código (java) [Seleccionar]

private void crearJLBinarios(int index,String numero){
     String binario=this.mySistemaBinario.getNumeroBinario(index);
     javax.swing.JFrame ventana=new JFrame("Representacion Binaria");
     ventana.setVisible(true);
     ventana.getContentPane().setLayout(new  BorderLayout());
     javax.swing.JLabel vecJL[]=new JLabel[binario.length()];
     
       for (int i=0;i<vecJL.length;i++) {
           Border borde;
           borde=BorderFactory.createLineBorder(Color.BLACK);
           javax.swing.JLabel mostrarBi=new JLabel();
         
           if(binario.charAt(i)=='0'){
               mostrarBi.setText("false");
           }
           else{
               mostrarBi.setText("true");
           }
           mostrarBi.setBackground(new java.awt.Color(255, 255, 255));
           mostrarBi.setBorder(borde);
         
           vecJL[i]=mostrarBi;
           vecJL[i].setBounds(100+i*50,150,100,30);
           ventana.add(vecJL[i]);
       }
   }

y me queda el ultimo texto fuera del label  y si agrego setOpaque(true); entonces me pone todo el panel en blanco :c adjunto imagenes para mas claridad
http://subefotos.com/ver/?2c3ae710a83eafc361413848db156b19o.png#codigos
http://subefotos.com/ver/?3f4494e798e9e9e88573c266c71fd533o.png#codigos
gracias de ante mano  ;-)  ;D

d!lan

#1
Bueno pude solucionar el problema que tenia anexo la solucion

Código (java) [Seleccionar]
private void crearJLBinarios(int index,String numero){
     String binario=this.mySistemaBinario.getNumeroBinario(index);
     JPanel contenedor=new JPanel(new GridLayout(1,0));
     JFrame ventana=new JFrame("");
     
     JLabel etiquetaNu=new JLabel("Nombre x "+numero.toString());
     etiquetaNu.setBounds(10,40,500,50);
     etiquetaNu.setFont(new Font("Arial",Font.BOLD,12));
     ventana.getContentPane().add(etiquetaNu);
     
     JLabel etiquetaBi=new JLabel("nombre x"+binario.toString());
     etiquetaBi.setBounds(10,150,500,50);
     etiquetaBi.setFont(new Font("Arial",Font.BOLD,12));
     ventana.getContentPane().add(etiquetaBi);
   
     //No se pero si no lo agrego me muestra uno solo de los de arriba
     JLabel jj=new JLabel("");
     ventana.getContentPane().add(jj);
   
     ventana.getContentPane().setBackground(new Color(234,234,243));
     ventana.getContentPane().add(contenedor);
     contenedor.setBackground(new Color(234,234,243));
     ventana.getContentPane().setLayout(new  BorderLayout());
     JLabel vecJL[]=new JLabel[binario.length()];
     
       for (int i=0;i<vecJL.length;i++) {
           Border borde;
           borde=BorderFactory.createLineBorder(Color.BLACK);
           JLabel mostrarBi=new JLabel();
         
           if(binario.charAt(i)=='0'){
               mostrarBi.setText("False");
           }
           else{
               mostrarBi.setText("True");
           }
           mostrarBi.setBackground(java.awt.Color.WHITE);
           mostrarBi.setBorder(borde);
           mostrarBi.setOpaque(true);
           vecJL[i]=mostrarBi;
           if(binario.length()>50){
                contenedor.setBounds(1,100,120+i*25,25);
           }else{
                contenedor.setBounds(1,100,410+i*25,25);
           }
           contenedor.add(vecJL[i]);
       }
       pintarJLBinarios(vecJL);
       ventana.setVisible(true);
       contenedor.setVisible(true);
       ventana.setSize(600,400);
   }

Debci