é o seguinte:
Estou construindo um joguinho em java, utilizando o swing, que utiliza um tabuleiro, d tipo banco imobiliário.
eu tenho vários jPanels declarados através do swing (uns 200) , que não me deixa editar a criação deles. Cada jPanel representa a posição de um dado jogador no tabuleiro.
a medida eu o jogador sorteia um número no dado, preciso fazer com que os jPanel se tornem visíveis ou não( .setOpaque(true)
para isso preciso “percorrer” eles, e o swing não me deixa indexá-los através de um array.
alguma dica?
Deixa sim. Basta colocar seus JPanels num ArrayList. E nada impede você de criar um array de JPanels também.
então como eu crio o array de jPanel criados pelo swing?
não consegui fazer isso mesmo…

Pelo Swing ou pelo Netbeans? Pq o Swing sozinho não cria nada.
Mas se o netbeans criou, vc pode simplesmente fazer:
E depois vc percorre o array normalmente.
private JPanel meuArray[] = {painel1, painel2, painel3, painel4};
essa atribuição simplesmente não funciona…
sera que to fazendo alguma coisa muito errada?
:shock:
Não precisas sequer do list ou do array…
podes simplesmente pegar a partir da tua janela, os componentes que estão nela…
Por exemplo:
Onde, frame, é a tua janela principal que contém os JPanel.
Vale lembrar que o getComponents() é do Container, então, para qualquer filho de container deve funcionar.
Sobre o código:
private JPanel meuArray[] = {painel1, painel2, painel3, painel4};
Tens que verificar se o teu painel1 foi iniciado no momento que fizesse isso.
O que eu quero dizer é que o código abaixo não vai funcionar, só vai imprimir null:
import javax.swing.JPanel;
public class Panels {
JPanel painel1;
JPanel painel2;
JPanel painel3;
JPanel painel4;
private JPanel meuArray[] = {painel1, painel2, painel3, painel4};
public void test() {
painel1 = new JPanel();
for (JPanel panel : meuArray) {
System.out.println(painel1);
}
}
}
Sim, e usando
como eu chamo o método .setOpaque(true)
; em cima do objeto de retorn da função ( que seria um jPanel) com um índice definido antes?