Pessoal to precisando de ajuda para popular um JPanel dinamicamente, to fazendo sistema de hotel, fiz uma ficha pra cadastrar os quartos, apartamentos etc, a partir dessa tabela preciso que cada quarto seja mostrado como uma JLabel, sendo uma imagem com as regras de negocio… de acordo que eu for adicionando um quartos ele vai aumentado lista de imagem e cada imagem seria suspostamente um quarto…
veja uma IMAGEM AQUI do resultado que eu gostaria de obter…
Agradeço a quem puder ajudar…
valeu…
Como fazer para um JPanel receber JLabel dinâmicamente
4 Respostas
Opa…
Tipos já desse uma olhada no GridBag Layout
http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html
ou
http://java.sun.com/j2se/1.3/docs/api/java/awt/GridBagLayout.html
Flw abraço…
Bem, como o amigo disse, GridBadLayout é a solução (se por acaso o seu problema for apenas com organizar os itens dentro do seu JPanel). Se a largura for fixa, você pode bem usar o GridLayout, que é mais simples que o GridBagLayout (http://java.sun.com/j2se/1.5.0/docs/api/java/awt/GridLayout.html).
No construtor dele tu passa o número predefinido de linhas/colunas (pode deixar um número fixo de colunas, e o de linhas dependente, é o que parece que vc quer fazer pela tua figura).
O teu problema é esse mesmo? Ou a forma como inserir os Labels?
Bem, como o amigo disse, GridBadLayout é a solução (se por acaso o seu problema for apenas com organizar os itens dentro do seu JPanel). Se a largura for fixa, você pode bem usar o GridLayout, que é mais simples que o GridBagLayout (http://java.sun.com/j2se/1.5.0/docs/api/java/awt/GridLayout.html).No construtor dele tu passa o número predefinido de linhas/colunas (pode deixar um número fixo de colunas, e o de linhas dependente, é o que parece que vc quer fazer pela tua figura).
O teu problema é esse mesmo? Ou a forma como inserir os Labels?
Pois é, o problema que eu quero inserir JLabel ou JButton (não sei ainda qual dos dois será mais viável) sendo 3 por linha, porém, de acordo com a quantidade que tiver cadastrado no banco de dados, vamos supor que exista 60 cadastros no banco, então ficaria ordenados 20 linhas com 3 componentes cada, ou seja, quero que ele carregue tanto 10 quanto 1000, que seja indiferente…
…
jContentPane = new JPanel();
jContentPane.setLayout(new GridLayout(0,3, 5, 5));
int max = new Random().nextInt(30);
for (int i = 0; i < max; i++) {
JLabel j = new JLabel("Label n" + i);
j.setBorder(BorderFactory.createLineBorder(Color.black));
j.setHorizontalAlignment(SwingConstants.CENTER);
j.setVerticalAlignment(SwingConstants.CENTER);
jContentPane.add(j);
}
…
No construtor de GridLayout, os parâmetros que eu coloquei foram: qualquer quantidade de linhas, 3 colunas e espaçamento de 5 pixels na largura e na altura entre os Labels… (vc pode colocar outros tipos de componentes, obviamente). Testa aí… 