Não consigo criar objetos em série

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.

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!

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.

[quote=“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![/quote]

Exception in thread main ArrayIndexOutOfBoundsException

:wink:

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

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

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

Acho que vi algum exemplo parecido com isso:

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

Obrigado.