Label Visivel (ERRO)

6 respostas
D

Olá pessoal meu problema é o seguinte, estou criando um programinha que testa a força da senha, qd for fraca fica vermelho, media fica amarela e forte fica verde, eu desenhei um label para cada caso, o problema é que quando eu digito uma senha fraca e dpois uma senha forte a label vermelha da senha fraca não desaparece,isso é para todos os casos, já tentei colocar um L1.setVisible(false) ' L1(label que possui a força fraca) ' para ela não ficar visivel mas não adianta, acho que estou fzd algo de errado pois teria que funcionar, vou postar um pedaço do meu código.

if (forca <= 1) {
            setLayout(null);
            L1=new JLabel("FRACA",L1.CENTER);
            Font f = new Font("Lucida Sans", Font.BOLD, 10);
            L1.setFont(f);
            add(L1);
            L1.setSize(45,20);
            L1.setLocation(105,93);
            L1.setBackground(Color.RED);
            L1.setForeground(Color.BLACK);
            L1.setVisible(true);
            L1.setOpaque(true);
         }
         else
             if (forca <=2 && forca >1){
                setLayout(null);
                L2=new JLabel("MEDIA",L2.CENTER);
                Font f = new Font("Lucida Sans", Font.BOLD, 10);
                L2.setFont(f);
                add(L2);
                L2.setSize(80,20);
                L2.setLocation(105,93);
                L2.setBackground(Color.YELLOW);
                L2.setForeground(Color.BLACK);
                L2.setVisible(true);
                L2.setOpaque(true);
                L1.setVisible(false);  //AQUI ESTOU COLOCANDO PARA A LABEL 1 SUMIR MAS NÃO FUNCIONA
               
                System.out.println(forca);
               
         }

ALGUÉM PODE ME AJUDAR?O QUE FIZ DE ERRADO?

6 Respostas

T

Em vez de criar 3 labels diferentes, crie exatamente uma só, mas altere as propriedades (texto, cor) dependendo da sua condição. É mais fácil de trabalhar e mais eficiente.

rock

concordo com o thingol, mas acho interessante saber pq o setVisible(false) não funcionou… eu não tenho pratica com swing mas imagino que seja a falta de um repaint(). Alguém que saiba pode confirmar por favor?
8)

D
if (forca <= 1) {
            setLayout(null);
            L1=new JLabel("FRACA",L1.CENTER);
            Font f = new Font("Lucida Sans", Font.BOLD, 10);
            L1.setFont(f);
            add(L1);
            L1.setSize(45,20);
            L1.setLocation(105,93);
            L1.setBackground(Color.RED);
            L1.setForeground(Color.BLACK);
            L1.setVisible(true);
            L1.setOpaque(true);
          
            System.out.println(forca);
         }
         else
             if (forca <=2 && forca >1){
              
                L1=new JLabel("MEDIA",L2.CENTER);
                Font f = new Font("Lucida Sans", Font.BOLD, 10);
                L1.setFont(f);
                L1.setSize(80,20);
                L1.setLocation(105,93);
                L1.setBackground(Color.YELLOW);
                L1.setForeground(Color.BLACK);
                L1.setVisible(true);
                L1.setOpaque(true);              
         }
assim?

ou preciso criar um construtor só para desenhar a label e depois ir chamando ela nas condições?

Leandro_Vecchi

Por curiosidade, como voce criou a classe para ver se a senha é de baixa,media ou alta segurança?
vlww

D

eu fiz varias condições que somavam uma pontuação caso ela tivesse mais que 6 digitos , se tivesse caracteres especiais, mais ponto se tivesse letra minuscula com letra maiuscula, numeros, qto maior a pntuação mais forte a senha é.

pessoal criei um metodo que desenha a label e retorna uma label

public JLabel Label(){ setLayout(null); JLabel L1 =new JLabel(""); add(L1); L1.setVisible(true); L1.setOpaque(true); return L1; }

e lá nas condições eu ocupo ela

if (forca <= 1) { setLayout(null); //POSSO TIRÁ-LO NÉ? L1=Label(); //PEGO A LABEL QUE FOI CRIADA L1=new JLabel("FRACA",L1.CENTER); Font f = new Font("Lucida Sans", Font.BOLD, 10); L1.setFont(f); add(L1); L1.setSize(45,20); L1.setLocation(105,93); L1.setBackground(Color.RED); L1.setForeground(Color.BLACK); L1.setVisible(true); L1.setOpaque(true); } else if (forca <=2 && forca >1){ setLayout(null); L1=Label(); L1=new JLabel("MEDIA",L2.CENTER); Font f = new Font("Lucida Sans", Font.BOLD, 10); L1.setFont(f); add(L1); L1.setSize(80,20); L1.setLocation(105,93); L1.setBackground(Color.YELLOW); L1.setForeground(Color.BLACK); L1.setVisible(true); L1.setOpaque(true); }

Mesmo assim as 2 labels ficaram aparecendo… aquele setLayout preciso tirar das condições?? o que estou fzd de errado, agora não posso fzr setVisible(false)…como faço para a outra label sumir qd aparece outra.

wellington7

Poste todo o código ou faça um SCCEE… :slight_smile:

Criado 22 de dezembro de 2008
Ultima resposta 24 de dez. de 2008
Respostas 6
Participantes 5