Não consigo criar objetos em série

7 respostas
N
Exemplo:

Quero criar 10 objetos do tipo JPanel.

Cada um terá o nome panel1, panel2, panel3, panel4, etc

Mas não quero fazer 10 vezes:

JPanel panel1 = new JPanel();

.

.

.

JPanel panel10 = new JPanel();

Quero fazer isso dentro de um laço for, mas não estou conseguindo concatenar o referênciaObjeto + id.

Obs: Não quero usar arrays para esse fim.

7 Respostas

F

tenta usar vetor pra fazer isso!

JPanel[] paine; for(int i = 0; i < 10; i++) { paine[i] = new JPanel(); }

Acredito que seja assim!

Abraços!

BrunoBastosPJ

Eu apostaria que isso não é possível… O que você pode fazer se quiser controlar pelo nome, é fazer um factory qualquer e quando criar um JPanel passar o nome no contrutor… Mas não sei onde isso vai ser aplicado.

BrunoBastosPJ

“felipelo”:
tenta usar vetor pra fazer isso!

JPanel[] paine; for(int i = 0; i < 10; i++) { paine[i] = new JPanel(); }

Acredito que seja assim!

Abraços!

Exception in thread main ArrayIndexOutOfBoundsException

:wink:

R

Ei bruno,

mas neste dispara da exception porque não foi instancia o array…

de qualquer forma, o autor do topico disse que não quer usar array…

[]'s

B

Ola,

Se vc tiver os paineis declarados na sua classe vc pode usar reflection…
assim:

Field[] panels = this.getClass().getDeclaredFields(); for (Field field : panels) { if (!field.getName().startsWith("panel")) continue; JPanel panel = (JPanel) field.getType().newInstance(); field.set(this,panel); } }

S

Criar N paineis com nome “panelN” e localizá-los depois, sem usar arrays

// criação 

Map<String, JPanel> mapPaneis = new HashMap<String,JPanel>() ;

for (int =0;i < N ; i++){
    JPanel panel = new JPanel();
    panel.setName("painel" + i );
    mapPaneis.put (panel.getName(),panel);
}

// para obter o painel depois 

JPanel panel = mapPaneis.get("painel2"); // retorna o painel 2
N

Acho que vi algum exemplo parecido com isso:

for(int i = 0; i < X; i++)
      Button b = new Button("Button" + i);

Obrigado.

Criado 27 de fevereiro de 2007
Ultima resposta 28 de fev. de 2007
Respostas 7
Participantes 6