Ola Pessoal
tem jeito de eu pegar todos os JButton de um JLabel e deixar todos com .setEnabled(false) ???
se sim, algum poderia em falar como?
valeu
Ola Pessoal
tem jeito de eu pegar todos os JButton de um JLabel e deixar todos com .setEnabled(false) ???
se sim, algum poderia em falar como?
valeu
Talvez o seu problema seja resolvido com o seguinte:
Component[] c = meujpanel.getComponents();
for (int i = 0; i < c.length; i++) {
if (c[i] instanceof JButton) { // faca algo }
}
A seguinte instrução devolve o número de componentes no container (no seu caso o JPanel):
int n = meujpanel.getComponentCount();
Espero ter ajudado.
Blz!
Quando eu postei a resposta, não tinha tanta certeza (eu estava fora do meu “habitat”) :mrgreen: Chegando agora no escritório eu testei (por que sabia da existência de getComponentCount() e de getComponents() mas achava que talvez pudesse obter um iterador, que seria muito melhor que lidar com um array…, mas não tem – pelo menos não achei).
Você obtém um array de Component existentes no Container (no caso o JPanel) assim:
Component[] comp = meuJPanel.getComponents();
daí vc pode percorrer os elementos do array normalmente (com um for()). Para desabilitar apenas os JButtons use o seguinte (dentro do bloco for()):
if (comp[i] instanceof JButton) {
JButton b = (JButton)comp[i];
b.setEnabled(false); // ou true...
}
Tendeu?! Se você quiser tenho um programinha “de brinquedo” que fiz pra testar isso, eu te mando. 
Ola dango
obrigado pela ajuda
eu entendi sim
unica coisa que eu nao entendi foi
JButton b = (JButton)comp[i];
b.setEnabled(false); // ou true…
mais precisamente a linha
JButton b = (JButton)comp[i];
o que realmente essa linha faz?
mas eu entendi
valeu pela ajuda
Isso é um casting (conversão explícita de tipo).
Como você obteve um array de Component, cada elemento desse array pode ser qualquer objeto que extenda a classe Component (JButton, JCheckBox, JComboBox, JList -- não diretamente, pois extendem, na verdade, JComponent, que por sua vez, extende a classe Container, que extende Component):
Component -> Container -> JComponent -> JButton, JCheckBox, ...
Sendo assim, quando você verifica que o i-ésimo elemento do array é um JButton if (comp[i] instanceof JButton), então você aplica uma conversão explícita de tipo (casting) para o JButton.
Na verdade, se você fizer comp[i].setEnabled(...), também funciona.
Ocorre que, se você tiver um outro método que receba como argumento um JButton (explicitamente) então você não poderá passar comp[i] e deverá converter explicitamente:
// ...
metodoQualquer(comp[i]); // falhara na compilacao
// ...
private void metodoQualquer(JButton b) { /*...*/ }
O código acima funcionará se você fizer uma chamada assim: metodoQualquer((JButton)comp[i]); então funcionará!
Espero ter ajudado.