Ola galera GUJ.
Bom gente, meu problema é bastante comum, eu li muitos tópicos relacionado ao assunto antes de resolver escrever esse aqui, alguns são bastante semelhantes ao meu, mas a solução que sugeriram não me ajudou.
Então vamos ao problema: No Eclipse eu criei um JLabel e adicionei uma imagem a ele com a intenção que o JLabel fosse a imagem de fundo do meu programa. Para uso apenas no Eclipse eu uso o codigo:
labelImagem = new JLabel(new ImageIcon("E:\Java\workspace\semNome\src\imagens\science1.jpg"));
mas agora eu quero gerar um arquivo jar, e como vocês bem sabem esse código não é o ideal.
Lendo outros tópicos cheguei a conclusão que é necessário usar um código assim:
getClass().getClassLoader().getResource("science1.jpg")
ou
getClass().getClassLoader().getResourceAsStream("science1.jpg");
Já tentei usar os dois, porem sem sucesso.
Consigo gerar o jar perfeitamente com o Eclipse.
Estrutura de pastas: workspace/semNome/src/imagens/science1.jpg
Como faço para meu arquivo jar carregar a imagem de fundo do JLabel corretamente?
meu código:
[code]public class GUJ extends JFrame implements ActionListener {
private JPanel painel;
private JLabel labelImagem;
public GUJ() {
tela();
}
public static void main(String[] args) {
new GUJ();
}
public void tela(){
// “E:\Java\workspace\semNome\src\imagens\science1.jpg”
// “/semNome/src/imagens/science1.jpg”
// getClass().getClassLoader().getResource(“science1.jpg”)
// getClass().getClassLoader().getResourceAsStream(“science1.jpg”);
painel = new JPanel();
labelImagem = new JLabel(new ImageIcon(“E:\Java\workspace\semNome\src\imagens\science1.jpg”));
painel.setLayout(null);
painel.add(labelImagem);
labelImagem.setBounds(1, 1, 300, 300);
this.pack();
this.getContentPane().add(painel);
this.setSize(308, 330);
Dimension tamanhoTela = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((tamanhoTela.width - this.getWidth()) / 2,
(tamanhoTela.height - this.getHeight()) / 2);
this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
}
}[/code]
Muito obrigado pela atenção.