Como colocar uma foto na tela utilizando swing?

15 respostas
S

Pessoal, estou com uma dúvida e gostaria de saber se alguém já colocou uma foto em uma tela utilizando swing, qual o tipo de campo foi utilizando?

15 Respostas

M

Sinval,
Você pode colocar em um Label, por exemplo.

http://www.javaalmanac.com/egs/javax.swing/label_CreateIcon.html

Abraço,

Márcio

S

Tudo bem Marcio, sobre a sua sugestão, gostaria de lhe agradeçer, mas me diga, eu preciso transformar a “foto” em um Icon ? Não posso ter um campo imagem na tela ?

M

Sinval,

O exemplo era de um icon, mas tente colocar um jpg ( mesmo grande ) , tenho quase certeza que funcinará.

Márcio

S

Beleza Marcio, realmente consegui colocar, mas ficou todo distorcido, como posso faze-lo ficar nitido a imagem colocada dentro deste JLabel? :?:

S

Pessoal, alguém pode me ajudar ??

M

Sinval,

Você quer colocar uma imagem ( foto) no fundo o frame ou em um componente específico ?

Márcio

S

Em um JLabel de tamanho aproximado das fotos 3X4.

T

úé, deveria funcionar normalmente! Eu já usei o label para colocar figuras, e sempre funcou… muito esquisito… :shock:

Bom, dê uma olhada nestes links aqui!

http://java.sun.com/docs/books/tutorial/index.html
http://java.sun.com/docs/books/tutorial/uiswing/components/splitpane.html

No segundo link que te passei, está ensinando o componente splitpane, no entanto, ele tem algum exemplo usando figuras. Dá uma cheretada no código fonte deles e veja como eles estão fazendo para trabalhar com as figuras! :wink:

Abraços!
Thiago Senna

S
Me parece que realmente não deveria ter este problema, mas segue os 2 códigos para ver onde estou errando. O primerio pega a imagem e o segundo a utiliza, estou enviando somente parte do código.
public Image foto;
public boolean getFoto() {
		if (!validaEntrada()) {
			return false;
		}
		try {

			File file = new File(this.path);
			if (file.exists()) {
				try {
					BufferedImage image = ImageIO.read(file);
					if (image == null) {
						System.err.println("Invalido formato lido");
					} else {
						this.foto = image;									
					}
				} catch (IOException ioe) {
					ioe.printStackTrace();
				} catch (IllegalArgumentException iae) {
					iae.printStackTrace();
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}
A classe que a utiliza tem o tamanho do JLabel
Icon iFoto;

	JLabel lFoto = new JLabel(iFoto);
		lFoto.setBounds(new Rectangle(16, 60, 75, 150));

if (!(funcionarioDAO
					.selecionaUnicoFuncionarioMatricula(funcionario))) {
				JOptionPane.showMessageDialog(null,
						"Funcionario com esta matricula não foi encontrado",
						"Erro", 1);
				return;
			} else {
				nomeFld.setText(funcionario.getNomeFuncionario());
				cargoFld.setText(funcionario.cargoAtualFuncionario());
				int matricula = Integer.parseInt(idFuncionarioFld.getText());
				funcionario.setMatriculaFuncionario(matricula);
				 
				PegaFoto pegaFoto = new PegaFoto("H:\", idFuncionarioFld
						.getText(), "jpg");
				iFoto = new ImageIcon(pegaFoto.foto);
				lFoto.setIcon(iFoto);
				
				 
			}
S

Alguém achou alguma coisa errada em meu código ??

M

O que faz o método pegaFoto()?

tnte colocar

iFoto.repaint();

ou mesmo

seuForm.repaint();

Márcio

S

Na realidade o pegaFoto não é um método e sim a classe que tem o objetivo de pegar a foto e me devolver, assim o pega foto é apenas um instancia, exemplo: PegaFoto pegaFoto = new PegaFoto();

Não sei se deu para entender ?

Vou fazer os testes que vc postaram e por volta das 9:30 eu retorno se deu certo.

Até.

S

Pessoal, infelizmente não estou conseguindo fazer a foto ficar na dimensão que preciso, quando informo o JLabel grande ela fica nitida, mas como preciso dela pequena ela fica distorcida.

Alguém tem mais alguma ideia ??

Marcio, fiz o repaint mas não funcionou.

Aguardo :?

S

Alguém tem alguma dica para me dar sobre o problema ???

M

Desculpe-me a pergunta cretina, mas não dá oara salvear a foto nas dimensões corretas ?

Márcio

Criado 9 de agosto de 2005
Ultima resposta 10 de ago. de 2005
Respostas 15
Participantes 3