Java - Ayuda con JLabels

 
Vista:
sin imagen de perfil

Ayuda con JLabels

Publicado por Francisco Javier (17 intervenciones) el 05/11/2013 15:29:52
Hola,
Tengo en pantalla 20 JLabels sin borde. Lo que quiero es que según una cantidad que me devuelva una consulta, pues les ponga borde. Por ejemplo, si la consulta devuelve 3, pues que los 3 primeros labels se les ponga un borde. Si devuelve 1, pues que solo ponga borde al primer label.
El nombre de los labels es lbl1, lbl2,...,lbl20.

De momento se me ocurre hacerlo con un switch...case, pero no se si habrá otra forma que me ayude a ahorrar lineas de código.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con JLabels

Publicado por Francisco Javier (17 intervenciones) el 06/11/2013 11:19:25
Comentar que tengo el código en 2 clases, una para las consultas a la BD y otra con el JPanel y JLabels
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con JLabels

Publicado por Francisco Javier (17 intervenciones) el 18/11/2013 18:15:20
Buenas tardes. Lo he solucionado con un arraylist de JLabel

Ahora tengo el siguiente problema:
· Selecciono una opción del menú y se pintan x JLabel, por ejemplo 3 (este dato lo obtengo de una consulta). Esta es la acción al seleccionar del menu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private void lblHMouseClicked(java.awt.event.MouseEvent evt) {
        String producto="COMIDA";
        ResultSet result=null;
        result=gestionSql.ConsultarBD(producto);
        ArrayList<JLabel>arrayLabelH=new ArrayList(); //ArrayList para los JLabel
        ArrayList<ImageIcon>arrayIconH=new ArrayList();  //ArrayList para los iconos de los labels
 
        int i=0;
 
        try{
            while(result.next()){
                String urlIcon=result.getString("Ruta");
                String urlIconLimpia=urlIcon.replace("#", "");
                ImageIcon icon=new ImageIcon(urlIconLimpia);
                i=i+1;
                arrayLabelH.add(new JLabel("lblProducto"+i));
                arrayIconH.add(icon);
            }
            escribeArrayLabel(arrayLabelH); //Hay un ArrayList para toda la clase y aqui lo rellenamos
            escribirArrayIcon(arrayIconH);
            result.close();
        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
        pintarLabels(arrayLabel);
 
        gestionSql.DesconectarBD();
    }
El código de pintarLabels
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void pintarLabels(ArrayList<JLabel> arrayLabel){
        int x=450;
        int y=0;
        int z=0;
        int a=0;
        for(int i=0; i<arrayLabel.size(); i++){
            if(i<=4){
                y=40;
            }else if(i>4&&i<=9){
                x=450+(100*z);
                y=140;
                z=z+1;
            }else if(i>9){
                x=450+(100*a);
                y=240;
                a=a+1;
            }
            label=new JLabel();
            label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            label.setIcon(arrayIcon.get(i));
            label.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
            label.setBorder(border);
            label.setBounds(x, y, 100, 100);
 
            pnlTPV.add(label);
            pnlTPV.revalidate();
            pnlTPV.repaint();
            x=x+100;
        }
    }

Bueno, el tema es que en la primera selección me muestra correctamente los 3 labels, pero si selecciono otra opción en la que hay que pintar otros labels, no elimina los que ya estan pintados. Hay alguna solución a esto?
Muchas gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar