Página Inicial do Fórum > GUI - (Applets, Swing, SWT, etc)

Bloquear campos dentro de um JPanel



Criar novo tópico   Responder tópico
  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Estou utilizando os componetes 'Swing' e quero criar uma tela que contenha um botão alterar, onde somente após pressionado este botão ele permita os usuários alterarem os dados dos campos da tela.
    O que pensei, acrescentar um panel e inserir os campos dentro dele e bloquear o panel.

    Criei um JPanel acrescentei um jTextField dentro do panel e criei um botão que seta o enabled do panel como verdadeiro ou falso.

    Mas os campos não estão bloqueando.

    Isso não funciona ou será que estou fazendo algo de errado?
    Utilizo netbeans 6.5.


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Resolvi de uma forma não sei se é a correta:
    Estou varrendo os componentes do panel e bloqueando os mesmos:

    for (Component cp : seuPanel.getComponents())
    cp.setEnabled(false);




  1. ticaio
    Posts:140


    Comment Arrow

    Publicado em: 25/03/2010 18:35:54

    Mas ai não vai bloquear os botões também???

    se assim te funcionando da outra forma também deveria funcionar x)




  1. Maveco
    Posts:154


    Comment Arrow

    Publicado em: 25/03/2010 18:52:04

    ticaio
    Mas ai não vai bloquear os botões também???

    se assim te funcionando da outra forma também deveria funcionar x)



    Imagino que os botões estão fora do panel dele....
    _________________
    Att,
    André de Lima e Silva
    http://codeflavor.wordpress.com
    Blog voltado a codificação java e boas práticas na programação.


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Eu também achei que deveria funcionar, mas não funcionou.
    Os botões quero fazer fixos no MDI no formulário principal.




  1. Metal Java Full
    Posts:2096


    Comment Arrow

    Publicado em: 26/03/2010 04:15:29

    Seria uma boa postar o código pra gente visualizar melhor o problema!


    _________________
    Blog | Twitter | 3adix Tech | GitHub


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Como não funciona:


    Como funciona:




  1. Maveco
    Posts:154


    Comment Arrow

    Publicado em: 25/03/2010 18:52:04

    vogelleandro
    Como não funciona:
    if (b == true)
    {
    jPanel1.setEnabled(b);
    b = false;
    }
    else
    {
    jPanel1.setEnabled(b);
    b = true;
    }
    Como funciona:
    if (b == true)
    {
    for (Component cp : jPanel1.getComponents())
    cp.setEnabled(b);
    b = false;
    }
    else
    {
    for (Component cp : jPanel1.getComponents())
    cp.setEnabled(b);
    b = true;
    }



    Cara se você analisar bem seu código ele não traz uma informação concreta do que queres fazer, mas reformatando ele dá pra ver que o primeiro código que tentou utilizar é inviável, vc tem que desabilizar os componentes como fez no segundo, só tens que explicar para nós pq vc troca o status do boolean dps que seta ele no enabled?

    vou postar o código de fonte referente a "reformatação" do código, repare que no código eu uso o boolean diretamente para os métodos setEnabled, pq não faz sentido comparar eles e dps assina-lar valores "true"/"false" sendo que ele é um boolean.

    Outra coisa, use as tags [.code][./code]!



    Viu como código ficou mais limpo? faz a mesma coisa.
    _________________
    Att,
    André de Lima e Silva
    http://codeflavor.wordpress.com
    Blog voltado a codificação java e boas práticas na programação.


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Correto, eu fiz só pra testes.

    Mas o meu caso é saber se funciona ou não bloquear os campos somente bloqueando o panel de alguma maneira ou precisa varrer os componentes como o segundo caso.

    pois varrendo os componentes o textArea não bloqueia se o mesmo estiver na tela.




  1. Maveco
    Posts:154


    Comment Arrow

    Publicado em: 25/03/2010 18:52:04

    textArea.setEditable(false);

    Tens que por isso também, mas tens que fazer "separado"...
    _________________
    Att,
    André de Lima e Silva
    http://codeflavor.wordpress.com
    Blog voltado a codificação java e boas práticas na programação.


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Eu precisaria padronizar o comando que você comentou para se eu tiver outra textArea também bloquear, pois esta rotina vai ser genéria para qualquer área.



    Tentei fazer assim, mas a linha abaixo não funciona.




  1. Maveco
    Posts:154


    Comment Arrow

    Publicado em: 25/03/2010 18:52:04

    vogelleandro
    Eu precisaria padronizar o comando que você comentou para se eu tiver outra textArea também bloquear, pois esta rotina vai ser genéria para qualquer área.



    Tentei fazer assim, mas a linha abaixo não funciona.



    Falei que tens que fazer separado, isso é junto!!

    colocas um techo de código depois do for com nome acesso ao textarea, ou seja
    TextArea.setEditable(false);
    _________________
    Att,
    André de Lima e Silva
    http://codeflavor.wordpress.com
    Blog voltado a codificação java e boas práticas na programação.


  1. Comment Arrow

    Publicado em: 25/03/2010 16:09:50

    Eu entendi, mas eu preciso padronizar pois esta rotina é genérica para todos os formulários e para qualquer textArea que aparecer.

    Como eu faço?




  1. Maveco
    Posts:154


    Comment Arrow

    Publicado em: 25/03/2010 18:52:04

    vogelleandro
    Eu entendi, mas eu preciso padronizar pois esta rotina é genérica para todos os formulários e para qualquer textArea que aparecer.

    Como eu faço?



    então dentro do for do components faz isso


    _________________
    Att,
    André de Lima e Silva
    http://codeflavor.wordpress.com
    Blog voltado a codificação java e boas práticas na programação.




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> GUI - (Applets, Swing, SWT, etc)