Java.Swing generalizar comando

Olá a todos, sou novo na comunidade e estou com uma dúvida sobre o Java.Swing.

Sou estudante e estou começando agora com Java.Swing, já aprendi bastante coisa pesquisando mas travei nisso.

O problema é o seguinte:

Eu tenho um JFrame com vários elementos dentro dele, JLabel, JPanel, etc… há alguma forma de generalizar um comando pra todos os JPanels ou JLabels ou sejá o que for?

Tipo, um comando que possa deixar todos os JPanels desabilitados ou invisíveis?

Bom não ficou bem claro o que voce quer dizer com comando generalizado, o que voce pode fazer é colocar varios componentes dentro de um painel e depois alterar a propriedade para setVisible(false) para esconder os componentes. Tenho bastante experiencia com swing te aconselho a usar o netbeans e estudar bastante layout. Acho que de inicio está apostila te ajudará bastante como me ajudou.

Bom, é exatamente isso eu queria saber se seria possível fazer todos ficarem visiveis ou invisiveis sem ter que por de 1 em 1, mas sim todos, ou um conjunto deles.

Amigo, todos os containers Swing (como JFrame, JPanel, etc) possuem um método chagado getComponents(), que retorna um array de Components ( Component[]).
Dessa forma, você pode iterar por esse array e ir definindo, pra cada Component, as propriedades que você precisar.
Você também pode iterar da maneira antiga usando índices, através dos métodos getComponentCount() e getComponent(int) .

http://java.sun.com/javase/7/docs/api/java/awt/Container.html
http://java.sun.com/docs/books/tutorial/uiswing/components/panel.html
http://java.ittoolbox.com/documents/how-to-find-components-inside-a-jpanel-container-18187

:wink:

Valeu Filipe, vou dar uma verificada nisso, acho que era exatamente isso mesmo que eu tava precisando!

Qualquer coisa passo por aqui de novo! :smiley:

Também tem a dica de setar com false o componete pai, tipo:

frame
– panel 1
----label 1
----label 2
----label 3

se setar como false o visible do panel 1, todos os labels também ficarão invisíveis e ao voltar o panel 1 com o visible true, os estados dos demais componentes voltarão como estavam. :slight_smile:

Aham, andeb, isso dai eu já tinha notado, uma coisa chata que acontece é você clicar em um menu e ficar Panels um abaixo do outro, o que eu queria era ao clicar no menu fechar todos os panel e abrir apenas o correspondente ao menu.

Mas isso é problema de novato mesmo :lol: todo mundo tem que passar por essas coisas um dia hehehe

Talvez o que você precise seja JLayeredPane. Talvez…

Se o problema for a visualização dos panels de acordo com a seleção de botões, um simples CardLayout poderia resolver isto muito bem.

de uma olhada em:
http://java.sun.com/docs/books/tutorial/uiswing/layout/layoutlist.html

Abraço