Autor
Mensagem
Olá companheiros, sou iniciante em java, e estou tendo um probleminha que me parece ser coisa simples, mas quem não tem tanta experiencia gera certos atrasos, mas enfim, negocio é o seguinte tenho um formulário na onde quero inserir a foto do cliente q ta sendo cadastrado, ae tenho um campo do tipo texto, onde eu digito o nome da imagem e sua extensão, só que ele não traz essa imagem, veja uma parte do código abaixo,
[CODE]
tf_foto.setText(con_cliente.resultset.getString("foto"));
lbFoto.setIcon(new ImageIcon("/Estoque/images/"+tf_foto.getText()));
[/CODE]
Observação.:eu criei uma caixa de dialogo tambem, pra que o usuario possa procurar pela imagen, e indiquei esse mesmo diretório para ele abrir, só que ele abre no meus documentos, não no diretorio mostrado no código acima....
[CODE]
tf_foto.setText(con_cliente.resultset.getString("foto"));
lbFoto.setIcon(new ImageIcon("/Estoque/images/"+tf_foto.getText()));
[/CODE]
Observação.:eu criei uma caixa de dialogo tambem, pra que o usuario possa procurar pela imagen, e indiquei esse mesmo diretório para ele abrir, só que ele abre no meus documentos, não no diretorio mostrado no código acima....
A foto selecionada pelo usuário veio dessa pasta(/Estoque/images/"+tf_foto.getText())??
Que tal tratarmos como File antes de passarmos para ImageIcon. Depois que estiver tudo ok vc refatora para ImageIcon.
Se abrir em meu documentos não tem problema, vc trata pegando o caminho inteiro até a imagem, ou pega o array de bytes e salva essa imagem em uma pasta do seu programa.
Att Davi
Que tal tratarmos como File antes de passarmos para ImageIcon. Depois que estiver tudo ok vc refatora para ImageIcon.
Se abrir em meu documentos não tem problema, vc trata pegando o caminho inteiro até a imagem, ou pega o array de bytes e salva essa imagem em uma pasta do seu programa.
Att Davi
intão minha dúvida está ae. porque no campo de texto que eu entro com o nome da imagem e sua extensão ta beleza, ele até salva no banco exemplo. FOTO = semfoto.jpg isso no banco, só que no formulário em si, ele não me retorna ela, ela preenche o campo com o nome da imagem, mas não a insere na label.....
Então cheguei a utilizar o FileChos, só que mesmo assim, a imagem não carrega..... se poderem dar uma analisada no código ficaria grato;....
private void button_fotoActionPerformed(java.awt.event.ActionEvent evt) {
try
{
JFileChooser busca_foto = new JFileChooser();
busca_foto.setCurrentDirectory(new File("/Estoque/images/"));
busca_foto.setDialogTitle("Carregar imagen do cliente");
busca_foto.showOpenDialog(this);
String foto = ""+busca_foto.getSelectedFile().getName();
tf_foto.setText(foto);
lbFoto.setIcon(new javax.swing.ImageIcon("/Estoque/images"+tf_foto.getText()));
}
catch(Exception erro)
{
// JOptionPane.showMessageDialog(null,"Não foi possivel inseriri foto" +erro);
}
}
#Código
private void button_fotoActionPerformed(java.awt.event.ActionEvent evt) {
try
{
JFileChooser busca_foto = new JFileChooser();
busca_foto.setCurrentDirectory(new File("/Estoque/images/"));
busca_foto.setDialogTitle("Carregar imagen do cliente");
busca_foto.showOpenDialog(this);
String foto = ""+busca_foto.getSelectedFile().getName();
tf_foto.setText(foto);
lbFoto.setIcon(new javax.swing.ImageIcon("/Estoque/images"+tf_foto.getText()));
}
catch(Exception erro)
{
// JOptionPane.showMessageDialog(null,"Não foi possivel inseriri foto" +erro);
}
}
só vai funcionar se a imagem estiver dentro desse diretório /Estoque/images/.
Eu aconselharia vc a salvar a imagem nesse diretório se ela não estiver nela e depois salvar o registro da foto no banco, do diretório /Estoque/images/.
Para isso funcionar não deve setar o diretório amarrando como vc fez /Estoque/images/, vai ter que deixar a do arquivo selecionado.
att Davi
Eu aconselharia vc a salvar a imagem nesse diretório se ela não estiver nela e depois salvar o registro da foto no banco, do diretório /Estoque/images/.
Para isso funcionar não deve setar o diretório amarrando como vc fez /Estoque/images/, vai ter que deixar a do arquivo selecionado.
att Davi
se eu descomentar a linha do catch. ele da o seguinte erro
"java.lang.nullPointerException" mas ele só da essa mensagem, si eu clicar no cancelar da caixa de diálogo, caso eu escolha o arquivo, e clique em abrir, ele ja passa no nome dele pro textField, mas não insere ele no label...
"java.lang.nullPointerException" mas ele só da essa mensagem, si eu clicar no cancelar da caixa de diálogo, caso eu escolha o arquivo, e clique em abrir, ele ja passa no nome dele pro textField, mas não insere ele no label...
sou iniciante, mas se entendi o que vc me disse, é isso que vc precisa para analisar??
run:
java.lang.NullPointerException
at cadastros.cad_cliente.button_fotoActionPerformed(cad_cliente.java:1195)
at cadastros.cad_cliente.access$700(cad_cliente.java:25)
at cadastros.cad_cliente$8.actionPerformed(cad_cliente.java:412)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 40 segundos)
run:
java.lang.NullPointerException
at cadastros.cad_cliente.button_fotoActionPerformed(cad_cliente.java:1195)
at cadastros.cad_cliente.access$700(cad_cliente.java:25)
at cadastros.cad_cliente$8.actionPerformed(cad_cliente.java:412)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 40 segundos)
Só para reforçar:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4893572
http://www.coderanch.com/t/346734/GUI/java/JFileChooser-setSelectedFile-hangs
http://stackoverflow.com/questions/356671/jfilechooser-showsavedialog-how-to-set-suggested-file-name
E um exemplo de teste:
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
public class Test extends JFrame {
JFileChooser chooser = new JFileChooser();
JButton button = new JButton("Escolha um arquivo ...");
public Test() {
super("Exemplo JFileChooser");
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int state = chooser.showOpenDialog(null);
File file = chooser.getSelectedFile();
if (file != null && state == JFileChooser.APPROVE_OPTION) {
JOptionPane.showMessageDialog(null, file.getPath());
} else if (state == JFileChooser.CANCEL_OPTION) {
JOptionPane.showMessageDialog(null, "Cancelado");
}
}
});
}
public static void main(String args[]) {
JFrame f = new Test();
f.setBounds(300, 300, 350, 100);
f.setVisible(true);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
}
}
Espero ter ajudado
Att Davi
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4893572
http://www.coderanch.com/t/346734/GUI/java/JFileChooser-setSelectedFile-hangs
http://stackoverflow.com/questions/356671/jfilechooser-showsavedialog-how-to-set-suggested-file-name
E um exemplo de teste:
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
public class Test extends JFrame {
JFileChooser chooser = new JFileChooser();
JButton button = new JButton("Escolha um arquivo ...");
public Test() {
super("Exemplo JFileChooser");
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int state = chooser.showOpenDialog(null);
File file = chooser.getSelectedFile();
if (file != null && state == JFileChooser.APPROVE_OPTION) {
JOptionPane.showMessageDialog(null, file.getPath());
} else if (state == JFileChooser.CANCEL_OPTION) {
JOptionPane.showMessageDialog(null, "Cancelado");
}
}
});
}
public static void main(String args[]) {
JFrame f = new Test();
f.setBounds(300, 300, 350, 100);
f.setVisible(true);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
}
}
Espero ter ajudado
Att Davi
Davi muito obrigado pela ajuda, vou testar o exemplo que voce me passou, e tentar passar o parametro pro getSelected.Mais a noite eu volto, porque agora to na facul estagio e a correria, mas assim que eu tiver uma resposta do teste volto aqui pra te dizer, tenha um Bom Dia com Deus ae!!!!
Ohh Davi boa noite cara, te fala testei aqui a passagem de parametro como vc tinha me dito....
busca_foto.setSelectedFile(new File("caminho\\arquivo.jpg")).getName();
só que da erro na linha de sintaxe, não tem como eu passar o diretório e o nome do arquivo nessa linha...se tem eu não sei =/ kkk
busca_foto.setCurrentDirectory(new File("/Estoque/images/"));
quando eu passo pro setCurrentDirectory o "/Estoque/images/", a caixa de dialogo não deveria abrir ai diretamente.....??? porque quando eu rodo a aplicação ele abre o Meus Documentos, ae tenho que procurar até chega nesse caminho que é passado "setCurrentDirectory(new File("/Estoque/images/"))"
e a mensagem de erro, eu percebi que ela só da quando eu clico no cancelar, sem ter selecionado nenhum arquivo, exemplo se eu tiver selecionado uma pasta e clicar no cancelar ele da erro, agora se eu seleciono qualquer outro arquivo ele passa o nome numa boa.....sem dar o erro
busca_foto.setSelectedFile(new File("caminho\\arquivo.jpg")).getName();
só que da erro na linha de sintaxe, não tem como eu passar o diretório e o nome do arquivo nessa linha...se tem eu não sei =/ kkk
busca_foto.setCurrentDirectory(new File("/Estoque/images/"));
quando eu passo pro setCurrentDirectory o "/Estoque/images/", a caixa de dialogo não deveria abrir ai diretamente.....??? porque quando eu rodo a aplicação ele abre o Meus Documentos, ae tenho que procurar até chega nesse caminho que é passado "setCurrentDirectory(new File("/Estoque/images/"))"
e a mensagem de erro, eu percebi que ela só da quando eu clico no cancelar, sem ter selecionado nenhum arquivo, exemplo se eu tiver selecionado uma pasta e clicar no cancelar ele da erro, agora se eu seleciono qualquer outro arquivo ele passa o nome numa boa.....sem dar o erro
Nossa me Desculpem pela demora em manter esse tópico aberto, o problema ja foi solucionado e de maneira bem simples ainda, fuçando eu copiei meu projeto para raiz do meu HD, mandei ele executa aplicação e la estavam os formularios com as Fotos.....MUITO OBRIGADO A TODOS PELA AJUDA!!!!!!










