Como fazer para um JPanel receber JLabel dinâmicamente

4 respostas
J

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…

4 Respostas

P

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…

B

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?

J

bruno.blbs:
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…

B

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í… :smiley:

Criado 25 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 4
Participantes 3