Eu estou com um problema quero criar 12 JLabels mas ter que configurar uma por uma, queria saber se tem alguma forma de configurar todos de uma vez só, ou algum outro método mais fácil.
Depende do que você quer fazer. Tenha em mente, no entanto, que em geral, coisas são automatizadas se elas têm uma rotina (aparecem com um certa frequência) ou tenham um padrão. Por exemplo: suponhamos que o texto a ser exibido seja: "Rótulo_1"
, "Rótulo_2"
, ...
, "Rótulo_k"
, …, "Rótulo_n"
. Como o texto é "Rótulo"
+ uma sucessão de números naturais, então tem-se um padrão e pode-se, por exemplo, usar uma estrutura de repetição para criar os textos. Na prática, eu vi muito códigos onde simplesmente cria-se uma lista de informações e depois a dispensam no componente. Por exemplo:
1 - Cria-se um array, uma lista, um enum
com as informações do componente:
public enum Rotulacao {
ROTULO1(0, "Nome: ", "Informe o nome"),
ROTULO2(1, "Sobrenome: ", "Informe o sobrenome"),
ROTULO3(2, "Sexo: ", "Informe o sexo"),
ROTULO4(3, "Idade: ", "Informe a idade");
private int indice;
private String textoRotulo;
private String dica;
public Rotulacao(int indice, String textoRotulo, String dica){
this.indice = indice;
this.textoRotulo = textoRotulo;
this.dica = dica
}
public int getIndice(){
return indice;
}
public String getTextoRotulo(){
return textoRotulo;
}
public String getDica(){
return dica;
}
}
2 - Usa-se uma estrutura de repetição para configurar as informações do componente:
import java.awt.Font;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import util.Rotulacao;
public class Tela extends JFrame{
public Tela(){
inicializar();
}
public void inicializar(){
painel = new JPanel();
painel.setLayout(new FlowLayout());
criarLabel();
}
public void criarLabel(){
labels = new JLabel[Rotulacao.values().length];
for(short i = 0; i < Rotulacao.values().length; i++){
labels[i] = new JLabel(Rotulacao.values()[i].getTextoRotulo());
labels[i].setFont(new Font("Arial", Font.PLAIN, 27));
labels[i].setToolTipText(Rotulacao.values()[i].getDica());
painel.add(label[i]);
}
}
private JPanel painel;
private JLabel[] labels;
}
Na verdade, você pode criar classes para cuidas dessas operações. Bom, aí está um exemplo.