Ai pessoal,
Como faço para redimensionar uma foto automaticamente dentro do Jlabel??? olha como está meu projeto:
Botão de caminho da imagem:
try {
JFileChooser Busca_foto = new JFileChooser();
Busca_foto.setCurrentDirectory(new File("/foto/"));
Busca_foto.setDialogTitle("Carregando foto do membro");
Busca_foto.showOpenDialog(this);
String foto = "" + Busca_foto.getSelectedFile().getName();
tf_foto.setText(foto);
lb_foto.setIcon(new ImageIcon("/foto/" + tf_foto.getText()));
} catch (Exception erro) {
}
mostrar a imagem:
tf_foto.setText(con_membros.resultSet.getString("MEM_FOTO"));
lb_foto.setIcon(new ImageIcon("/foto/" +tf_foto.getText()));
Como posso implementar esse projeto ???
Blz Sr Vini,
mas como faço para instanciar o objeto dessa classe???
JImagePanel imgPanel = new JImagePanel("C:/imagem.jpg");
seuPainel.add(imgPanel);
Se precisar carregar a imagem a partir de um Resource:
BufferedImage img = ImageIO.read(getClass().getResourceAsStream("C:/imagem.jpg"));
JImagePanel imgPanel = new JImagePanel(img);
seuPainel.add(imgPanel);
Vini, não me leva a mau cara, mas vou lhe fazer mais uma pergunta,
é que na verdade estou começando agora com java então la vai:
Entendi o funcionamento desse classe blz,
Mas o que não consigo entender é como ela vai buscar no diretorio a foto, setar em um textField e pegar o resultado e imprimir no Jlabel, como no código que enviei no início…
então ai vai a pergunta:
eu instancio o objeto em que lugar? mantenho os códigos iniciais ou não??
Estou fazendo assim:
JFileChooser Busca_foto = new JFileChooser();
Busca_foto.setCurrentDirectory(new File("/foto/"));
Busca_foto.setDialogTitle("Carregando foto do membro");
Busca_foto.showOpenDialog(this);
String foto = "" + Busca_foto.getSelectedFile().getName();
tf_foto.setText(foto);
BufferedImage img = ImageIO.read(getClass().getResourceAsStream("/foto/" +tf_foto.getText()));
JImagePanel imgPanel = new JImagePanel(img);
lb_foto.add(imgPanel);
Mas não funciona…
Claro o getResource() é feito para abrir recursos. Recursos são arquivos que ficam no ClassPath da aplicação. Se o usuário vai abrir através de um JFileChooser, então trata-se de um File, não de um recurso.
Nesse caso, use o jeito mais simples:
[code]JFileChooser buscaFoto = new JFileChooser();
buscaFoto.setCurrentDirectory(new File("/foto/"));
buscaFoto.setDialogTitle(“Carregando foto do membro”);
if (buscaFoto.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
return;
File foto = buscaFoto.getSelectedFile();
tf_foto.setText(foto.getFileName());
JImagePanel imgPanel = new JImagePanel(foto);
lb_foto.add(imgPanel); [/code]
O que é lb_foto?
Eu sugiro que você adicione o JImagePanel apena uma única vez. Nas próximas trocas de foto, simplesmente chame:
imgPanel.setImage(foto);
E não dê add novamente. Você pode até mesmo adicionar um ImagePanel vazio na construção de seu form, onde a foto deverá aparecer.
lb_foto é um jlabel,
eu imprimo a imagem no jpanel ou no Jalbel?
além da sua sugestão existe mais algum erro na instrução??
Você não pode colocar o painel dentro de um JLabel.
Ele irá no lugar do JLabel, a imagem será desenhada dentro dele.
Na verdade é o contrário, o Jlabel dentro do Painel…
Agora ficou confuso Vini,
Como eu vou chamar o método setImage se ele não tem na classe JImagePanel…??
[quote=lincolngadea]Agora ficou confuso Vini,
Como eu vou chamar o método setImage se ele não tem na classe JImagePanel…??[/quote]
Como não? Acabei de abrir a classe aqui, e tem 3 versões do método setImage nela.
kkkk,
Vini me desculpe, eu estava usando outra classe, por isso estava confuso, só agora percebi que tinha o download da classe completa no forum, vou implementar e te digo…
vlw pela paciencia…hehe
espero que resolva,
abs…
Vini, estou fazendo desse jeito…
JFileChooser buscaFoto = new JFileChooser();
buscaFoto.setCurrentDirectory(new File("/foto/"));
buscaFoto.setDialogTitle("Carregando foto do membro");
if (buscaFoto.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
return;
File foto = buscaFoto.getSelectedFile();
tf_foto.setText(foto.getName());
JImagePanel imgPanel = new JImagePanel(foto);
painelimagem.add(imgPanel);
Busca a foto, seta no textfield mas não aparece no Jlabel e nem no painel
// o metodo abaixo carrega uma nova imagem em um jlabel
// e tbm seta o tamanho da imagem de acordo com o label
public void carregaFoto(){
javax.swing.JFileChooser jfc = new javax.swing.JFileChooser();
jfc.setMultiSelectionEnabled(false);
jfc.setDialogTitle("Selecione a foto do Colaborador");
jfc.setFileFilter(new FileNameExtensionFilter("JPG, GIF e PNG", "jpg", "gif", "png","bmp"));//nao entendi pq tem que repetir as extencoes
this.jLFoto.setText("");
// a linha abaixo mostra o nome do arquivo no campo file name
//dentro da janela do jfc
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);// ha outras opcoes alem de files_only
int resposta = jfc.showOpenDialog(this);
//este if determina o que o programa faz ao se clicar no
// botao de carregar ou cancelar dentro do jfc
if (resposta ==0){
// se clica em carregar imagem faz isso...
Image img = new ImageIcon(jfc.getSelectedFile().getAbsolutePath()).getImage().getScaledInstance(150, 150, Image.SCALE_DEFAULT);
jLFoto.setIcon(new ImageIcon(img));
}
if (resposta ==1){
//se a pessoa clica em cancelar nao faz nada...
}
}
fiz esse código faz um tempo já nem lembro mais qq passava na minha cabeça mas funciona ta ai pra vc conferir alterar e dar risada falow
kkkkkkkkkkkkkkkkkkkkkkk
rs
rs
É verdade Edu,
agora é só rolar de rir, vlw cara, funcionou,
“Vini, muito obrigado tb cara, vc me ajudou muito falou…”
até mais rapaziada…
Jamais faça ifs como esse:
if (resposta ==0){
Veja que 0 é um número mágico. Prefira sempre usar as constantes, que o próprio FileChooser define:
if (resposta ==JFileChooser.APPROVE_OPTION){
Assim fica claro o que o if significa.
É verdade, eu tinha me atentado a isso quando dei uma analisada no outro código que me mandou, acrescentei tambem o setCurrentDirectory pra definir o caminho do diretório, ficou bem legal,
Agora o que estava tentando entender naquela implementação sua é pq vc preferiu setar a imagem no painel e não no label… se é que entendi certo…?
Uma das perguntas clássicas do GUJ é:
“Como colocar uma imagem de fundo no meu JPanel?”
Aquele painel é exatamente isso, um painel que tem uma imagem de fundo.
Entendi,
Vini,
me add ai no seu msn cara,
lincolngadea@despcompany.com