"Percorrer" jPanels

é 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):wink:
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…

:frowning:

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?