Ajuda com Icon

Bom dia, estou fazendo um exercício da faculdade, mas, estou preso nessa parte, eu pesquisei muito mas só acho tópicos específicos e não me ajudam… Dá um erro de conversão por ser JFile Chooser, era para trocar a foto pelo arquivo selecionado…

Texto pré-formatado private void

jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
       JFileChooser file = new JFileChooser(); 
       int i = file.showSaveDialog(null); 
        file.setFileSelectionMode(JFileChooser.FILES_ONLY);
        file.showOpenDialog(this);
        file.getSelectedFile();
               if (i==1){
                  
               foto.setIcon(new javax.swing.ImageIcon(getClass().getResource(file))); ///Essa parte precisa de correção
        } else {
        }

Tal como o erro indica, o método getResource() recebe como parâmetro uma String. Tu estás a tentar passar um JFileChooser. No entanto, do teu JFileChooser podes obter o File e desse File, o seu nome.

foto.setIcon(new javax.swing.ImageIcon(getClass().getResource(file.getSelectedFile().getAbsolutePath())));
1 curtida

O que esse parâmetro indica?

É só ler a documentação

Primeiro você chama o showSaveDialog pra depois chamar o showOpenDialog ?
Não faz sentido.

Imagino que isso aqui basta:

	jButton1MouseClicked(MouseEvent evt) {                                      
		JFileChooser chooser = new JFileChooser(); 
		chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int option = chooser.showOpenDialog(this);
		if (option == JFileChooser.APPROVE_OPTION) {
			File file = chooser.getSelectedFile();
			Image image = ImageIO.read(file);
			foto.setIcon(new ImageIcon(image));
		}
	}

O que parece e que o problema está na forma como você está tentando configurar o ícone da foto usando getClass().getResource(file)… O método getResource é usado para carregar recursos do caminho relativo ao projeto (geralmente do classpath), enquanto file.getSelectedFile() retorna o caminho absoluto do arquivo selecionado pelo JFileChooser.
Aqui um exemplo de código que possa ser implementado e refatorado conforme o seu projeto, tipo tá meio gambiarra mais acredito que passa :joy: :joy:, espero ter ajudado, abraços.

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
JFileChooser file = new JFileChooser();
file.setFileSelectionMode(JFileChooser.FILES_ONLY);
int i = file.showOpenDialog(this);

if (i == JFileChooser.APPROVE_OPTION) {  
    File selectedFile = file.getSelectedFile(); 
    if (selectedFile != null) {
        foto.setIcon(new javax.swing.ImageIcon(selectedFile.getAbsolutePath()));
    }
} else {
    System.out.println("Nenhum arquivo selecionado");
}

}
`