"Percorrer" jPanels

6 respostas
ThalitaPinheiro

é 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?

6 Respostas

ViniGodoy

Deixa sim. Basta colocar seus JPanels num ArrayList. E nada impede você de criar um array de JPanels também.

ThalitaPinheiro

então como eu crio o array de jPanel criados pelo swing?

não consegui fazer isso mesmo…

:frowning:

ViniGodoy

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.

ThalitaPinheiro

private JPanel meuArray[] = {painel1, painel2, painel3, painel4};

essa atribuição simplesmente não funciona…

sera que to fazendo alguma coisa muito errada?

:shock:

O_Monge

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);
		}
	}
}
ThalitaPinheiro

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?

Criado 11 de abril de 2011
Ultima resposta 11 de abr. de 2011
Respostas 6
Participantes 3