Imagens

19 respostas
F

Queria saber como faço para colocar imagens no frame

19 Respostas

viniciusalvess

adicione a imagem a um JPanel e depois adicione o JPanel a um JFrame !

daniellfeijo

Fafa…
Para usar fotos faço o sequinte:

...
JLabel foto;
File foto_daniel;
ImageIcon imageIcon;

public void montaIncialDesenvolvimento(){
        foto = new JLabel();
        //criar um objeto File para receber minha foto e pode-la usar no metodo GeraThumbnail
        foto_daniel = new File("foto_daniel.jpg");
        // criar um objeto ImageIcon para receber o retorno do metodo GeraThumbnail
        ImageIcon imageIcon = new ImageIcon();
        //faça a invocação do metodo GeraThumbmail colocando o "File" e o tamanho da largura que você
        //quer que seja exibida sua imagem em pixel onde imagemIcon vai receber seu retorno. 
        imageIcon = GeraThumbnail(foto_daniel, 150);
        // invocação do metodo setIcon da Classe JLabel que leva como argumento minha imageIcon
       foto.setIcon(imageIcon);
}
//segue abaixo o metodo GeraThumbnail que gera como retorno uma ImageIcon e 
//pede como argumento sua File e uma int com
//a largura que você deseja exibir a imagem
private static ImageIcon GeraThumbnail(File arquivo, int labelWidth){   
	     ImageIcon imagem = new ImageIcon(arquivo.getAbsolutePath());   
	     ImageIcon thumbnail = null;   
	     if(imagem.getIconWidth() > labelWidth){   
	         thumbnail = new ImageIcon(   
	         imagem.getImage().getScaledInstance(labelWidth, -1, Image.SCALE_DEFAULT));   
	     } else   
	         thumbnail = imagem;   
	  
	     return thumbnail;   
	}

Aí vc pergunta porque você usa o Thumbnail? Por que ele é prático… Vc pode ir ajustando o tamanho que vc quiser de sua imagem no seu codigo… independente do tamanho original dela… Ao inves de você ficar redimensionando o tempo todo sua imagem direto no arquivo .jpg para ficar melhor no seu frame… com o Thumbnail é só alterar o tamanho dele no seu codigo que ele ajusta na hora!!! Mais prático e mais rápido…

Espero ter ajudado de alguma forma…

Abraço…

ViniGodoy

Ou use uma classe pronta para isso:
http://www.guj.com.br/posts/list/56248.java#295271

F

Muito obrigada me ajudou muito

jedsc91

vlw msm vini, essa classe vai ajuda bastante

guisantogui

Tb pode se usar uma JLayeredPane, que tem varias camadas, voce seta na ultima camada uma label com a imagem e na camada acima coloca os componentes da Frame!

jedsc91

JLayeredPane esse eu naum conhecia, vo testa ele tbm, vlw^^

guisantogui

Eh bem bom, eu to usando aqui!

edsonlopes

Só para completar.
No Java, ele aceita (dentro do campo texto) as tags HTML, ou seja, se vc colocar “Texto Bold e Italic !” e funciona também… Então, se colocar uma tag de imagem, ele aceita.

Dependendo da sua necessidade, esssa forma pode ser mais fácil.

jedsc91

edson vlw mesmo cara, vou tenta hj msm cara,
isso pode me facilita muito a vida o.O
vlw msm :lol:

jedsc91

bem já q vcs ja me ajudaram tanto, alguem poderia me dize como se usa o jScrollPane :oops: ,
tipo, ele não aceita Layouts??
para eu colocar um jScrollPane com um GridLayout ou outro,eu teria q coloca um Jpanel dentro do jScrollPane???
eu tentei usa assim, só q naum aparece nada :frowning:

ViniGodoy

Sim, você precisa colocar um JPanel dentro do JScrollPane.

E nele os componentes precisam estar presentes. Caso contrário, ele terá tamanho 0.

Se você quiser definir um tamanho para um JPanel vazio use o método setPreferredSize.

jedsc91

eu adicionei componentes ao Jpanel, mas se eu coloca-lo dentro de um JScrollpane ele não aparece nada, aliás eu tento colocar qualquer coisa dentro de um JScrollPane e não aparece nada, eu devo definir algo diferente em um JscrollPnae ou eu adiciono igual ao um JPanel???
vlw de novo pela ajuda :oops: …

ViniGodoy

Você deve adicionar o Panel no ScrollPane e o ScrollPane no seu form. É isso que vc está fazendo?

jedsc91

sim vini, é exatamente isso q eu to fazenu…
só se eu muda de JScrollPane pra Jpanell da certu, ta dandu erro por ser um JScrollPane…
e eu precisava de um JScrollPane… mas se não dé certu eu tbm poderia colocar uma barra de rolagem, só q o código ficaria bem maior…

ViniGodoy

Você deu um setPreferredSize no seu JPanel?

O tamanho que deve ser definido é o tamanho total do painel, como se ele tivesse fora do ScrollPane e completamente visível. O scrollpane usa essa propriedade para saber como colocar as barras de rolagem.

jedsc91
while (c < 19) {
            c = c + 1;
            l = 0;


            while (l < 19) {

                img[l][c] = new JLabel();
                img[l][c].setText("coluna " + c + " linha " + l);
                pnlCampo.add(img[l][c]);

            }

        }

        frTela.add(jspCampo);
       jspCampo.add(pnlCampo);
        frTela.setVisible(true);
while (c < 19) {
            c = c + 1;
            l = 0;


            while (l < 19) {
                l = l + 1;

                img[l][c] = new JLabel();
                img[l][c].setText("coluna " + c + " linha " + l);
                pnlCampo.add(img[l][c]);

            }

        }

        frTela.add(pnlCampo);
       
        frTela.setVisible(true);

o 1º código não aparece nada, mas o 2º aparece certinhu.......
eu tentei dando tamanho tamanhu pro JPanel, mas tbm naum deu certu......
tentei tbm da um setVisible(true) pra td^^
pq o JPanel funciona certu fora do JScrollPane mas dentro não aparece nada??

ViniGodoy

No primeiro exemplo, troque de lugar as linhas 16 e 17.

jedsc91

haUAhuaHauhaUAhuA
q erro tonto o meu =/
vlw msm vini

Criado 22 de novembro de 2009
Ultima resposta 8 de abr. de 2010
Respostas 19
Participantes 7