Recuperar Valor do JFileChooser[Resolvido]

2 respostas
Rodrigo_Bronks
Estou com um problema,Criei uma Classe com um Método para executar o JFileChooser em um Botão Utilizando ActionListener para executala,Estou conseguindo recuperar o Valor do Arquivo que no Caso é o diretorio da imagem,mas não estou conseguindo passar o valor dela para o método de gravar no banco Segue Abaixo os Código.Oque realmente acontece é que eu não consigo pegar a variavel foto e passar para o metodo de gravação da classe Cadastra Aluno. Classe do JFileChooser:
package factory;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class SelecionaImagem {
	private JFileChooser escolhefoto;
	public String foto1;
	public void ImagemSelecionada(){
		try{
			 escolhefoto = new JFileChooser();
			 FileNameExtensionFilter filter = new FileNameExtensionFilter("Arquivo de Imagem","JPEG","GIF", "jpg", "gif","PNG");  //Cria um filtro
			   escolhefoto.setFileFilter(filter);  //Altera o filtro do JFileChooser 
			    escolhefoto.setCurrentDirectory(new File ("C://pontodeapoio/fotos"));
			    escolhefoto.setAccessory(new ImagePreview(escolhefoto));
			    escolhefoto.setDialogTitle("Selecione o Arquivo");
			    escolhefoto.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
			    escolhefoto.setAcceptAllFileFilterUsed(false);
			  
			    int res = escolhefoto.showOpenDialog(null);  
		           if(res == JFileChooser.OPEN_DIALOG)
		           {	 
		        	  //File foto = escolhefoto.getSelectedFile();
		        	   String foto = escolhefoto.getSelectedFile().getCanonicalPath().replace("\\", "/");
		        	   foto1 = foto;
		        	   //String foto = escolhefoto.getSelectedFile().getName();
		        	   System.out.println(foto);
		        	 /*  String url = "jdbc:mysql://localhost:3306/test";
		        	   Connection con = (Connection) DriverManager.getConnection(url,"root","vertrigo");
		        	   String sql = "Select * From aluno1 Order by id Desc";
		        	   PreparedStatement stm = (PreparedStatement) con.prepareStatement(sql);
		        	   ResultSet rs = stm.executeQuery();
		        	   String s = rs.getString("id")+1;
		        	   JOptionPane.showMessageDialog(null,s);*/
		        	   //"UPDATE facil SET " +  "imagem = '"+ foto +"'" +  "WHERE id = '"+ jTextField7.getText() +"'";  
		        	   //Select * From Tabela Order by NomedoCampoPrimario Desc
		           } 
		           if(res == JFileChooser.CANCEL_OPTION)  
		           {  
		             
		               JOptionPane.showMessageDialog(null, "Você não escolheu nenhuma imagem!","Inserir Imagem:",JOptionPane.WARNING_MESSAGE);  
		           }       
		           
			    if (escolhefoto.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
			     // System.out.println("getCurrentDirectory(): " + escolhefoto.getCurrentDirectory());
			     // System.out.println("getSelectedFile() : " + escolhefoto.getSelectedFile());
			    } else {
			      System.out.println("No Selection ");
			    }
			}catch(Exception e){
				 JOptionPane.showMessageDialog (null,"erro","Erro",JOptionPane.ERROR_MESSAGE);
			} 
	}
}
Código do ActionListener que executa o Metodo do JFileChooser :
btnFoto.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				SelecionaImagem Foto = new SelecionaImagem();
				Foto.ImagemSelecionada();
				
			}
		});
Esta é Classe cadastra aluno com o Action Listener Responsavel por passar os valores para o DAO
btnCadastrar_Aluno.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
	// instanciando a classe Aluno do pacote modelo e criando seu objeto aluno
				Aluno aluno = new Aluno();
				aluno.setNome(tfNome.getText());
				aluno.setEndereco(tfEndereco.getText());
				aluno.setBairro(tfBairro.getText());
				aluno.setCidade(tfCidade.getText());
				aluno.setComplemento(tfComplemento.getText());
				aluno.setCep(tfCep.getText());
				aluno.setCelular(tfCelular.getText());
				aluno.setTelefone(tfTelefone.getText());
				aluno.setDataNascimento(tfNascimento.getText());
				aluno.setSexo(buttonGroup.getSelection().getActionCommand());	
				aluno.setImagem("");
				//aluno.setSexo(tfSexo.getText());
			   // buttonGroup.getSelection().getActionCommand(); 
				// fazendo a validação dos dados
		        if ((tfNome.getText().isEmpty()) || (tfEndereco.getText().isEmpty()) || (tfBairro.getText().isEmpty()) || (tfCidade.getText().isEmpty())|| (tfComplemento.getText().isEmpty())|| (tfCep.getText().equals("  .   -   "))|| (tfCelular.getText().equals("(  )     -    "))|| (tfTelefone.getText()=="(  )    -    ")|| (tfNascimento.getText()=="  /  /    ") ) {
		            JOptionPane.showMessageDialog(null, "Os campos não podem retornar vazios");
		        }
		        else {
		// instanciando a classe UsuarioDAO do pacote dao e criando seu objeto dao
		            AlunoDAO dao = new AlunoDAO();
		            dao.adiciona(aluno);
		            JOptionPane.showMessageDialog(null, "Aluno: "+tfNome.getText()+" Cadastrado com sucesso! ");
		        }	
		
		    
			}
		});

2 Respostas

fmad27

Pelo o que eu consegui entender, você está capturando o arquivo mas não está fazendo nada com ele.
Mude o a declaração do seu método para retornar o caminho do arquivo:

public static String getImagemSelecionada() { ..

E no evento do botão você chama o seu método:

String imagem = SelecionaImagem.getImagemSelecionada();
...
aluno.setImagem(imagem);

Bom, pelo menos foi o que eu entendi do problema.

Rodrigo_Bronks

Era exatamente isso obrigado!

Criado 22 de fevereiro de 2013
Ultima resposta 2 de mar. de 2013
Respostas 2
Participantes 2