método automático redimensionador de imagens em JLabel

1 resposta
N

Quero adaptar as linhas 46 a 52 em um método add, sobrescrevendo-o para assim que adicionar as imagens, todas estarem do msm tamanho. Estou usando o FlowLayout em vez do GriBagLayout. Minha dúvida é quanto ao parametro do método add, pois na linha 46 pega a string do caminho da foto e no meu caso isso teria que acontecer com todas as imagens que forem adicionadas e também não se isso é possivél. Sou leiga nesse assunto de layout e aqui no forum, dei uma pesquisada aqui no forum e encontrei coisas complexas pro meu nível :(

tenho o seguinte código como base:

package exemploswing01;

import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class JFrame1 extends JFrame {

    private void addGB(GridBagConstraints constraints, Component component, int x, int y) {
        constraints.gridx = x;
        constraints.gridy = y;
        add(component, constraints);
    }

    public JFrame1() {
        super();
        // setSize(300, 200);
        setTitle("Imagens...");

        Container c = this.getContentPane();

        GridBagConstraints cons = new GridBagConstraints();

        GridBagLayout layout = new GridBagLayout();
        c.setLayout(layout);

        JLabel imagem1 = new JLabel();
        JLabel imagem2 = new JLabel();
        JLabel imagem3 = new JLabel();
        JLabel imagem4 = new JLabel();
        JLabel imagem5 = new JLabel();

        imagem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/xicara_java.gif")));
        imagem2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/gorila_02.gif")));
        imagem3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/java_xicara_02.gif")));
        imagem4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/gato_mexendo_rabo_5.gif")));
        imagem5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Figuras/patera_correndo_03.gif")));
        cons.fill = GridBagConstraints.BOTH;
        
        //para mudar o tamanho de uma imagem
        ImageIcon icone = new javax.swing.ImageIcon(getClass().getResource("/Figuras/gorila_02.gif"));//new ImageIcon("/Figuras/gorila_02.gif");
        Image imagemAux;
        imagemAux = icone.getImage();
        icone.setImage(imagemAux.getScaledInstance(150, 150, Image.SCALE_FAST));

        JLabel labelComImagemDeTamanhoDiferente = new JLabel();
        labelComImagemDeTamanhoDiferente.setIcon(icone);

        cons.gridy = 0;
        cons.gridx = 3;
        cons.gridwidth = 3;
        c.add(labelComImagemDeTamanhoDiferente, cons);

        cons.gridy = 0;
        cons.gridx = 0;
        cons.gridwidth = 3;
        c.add(imagem1, cons);


        cons.gridy = 3;
        cons.gridx = 3;
        cons.gridwidth = 1;
        c.add(imagem2, cons);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //setLocation(100,100);
    }
}

1 Resposta

Margel_Douglas

Se a idéia é apenas ter algumas imagens lado a lado no mesmo tamanho, vc pode usar o GridLayout
Mais ou menos assim:

private class TestLayout extends JFrame{
   public TestLayout() {
      initGUI();
   }
   private void initGUI() {
      setSize(300, 200);
      setLayout(new GridLayout(2,3)); //LINHAS E COLUNAS 
      getContentPane().add(new JLabel("IMG 1"));
      getContentPane().add(new JLabel("IMG 2"));
      getContentPane().add(new JLabel("IMG 3"));
      getContentPane().add(new JLabel("IMG 4"));
      getContentPane().add(new JLabel("IMG 5"));
      getContentPane().add(new JLabel("IMG 6"));
   }
}

No exemplo estou adicionando 6 JLabel, sendo 2 linhas de 3 colunas … cada label tera o tamanho 100x100, pelo size do frame que é de 300x200

Criado 26 de novembro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 1
Participantes 2