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

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.