Duvida ao gerar arquivo *.jar

Sou iniciante na linguagem java,e criei uma pequena aplicação para treinar um pouco mais.
A minha aplicação contem menus e alguns botões com imagens,mas o meu problema é na hora de criar o arquivo *.jar.
O arquivo é gerado mas os icones para serem visualizados tem que estar na pasta em que o projeto fooi criado.
Eu uso o eclipse,alguem pode medar um help??

A SEGUIR VEM O CÓDIGO DA APLICAÇÃO

//Importa os principais pacotes a serem usados no programa
import java.awt.;
import java.awt.event.
;

import javax.swing.*;

@SuppressWarnings(“serial”)
public class TesteJButton extends JFrame {
private JTextField campo1,campo2;
private JLabel nome,sobrenome,resultado;
@SuppressWarnings(“unused”)
private JButton botao1;
@SuppressWarnings(“unused”)
private JButton botao2;
@SuppressWarnings(“unused”)
private JButton sair;
TesteJButton(){
//Cria janela da aplicacão e insere um icone a mesma
super(“Digite seu nome e sobrenome:”);
Toolkit kit = this.getToolkit();
Image icone = kit.getImage(“Imagens/letter.png”);
this.setIconImage((Image)icone);
Container container = getContentPane();
container.setLayout(new FlowLayout(FlowLayout.CENTER));

//cria barra de menus
JMenuBar menu = new JMenuBar();

//cria o menu Aplicacao
JMenu aplicacao = new JMenu (“Aplicacao”);
//cria os itens do menu Aplicacao
JMenuItem juntar = new JMenuItem(“Juntar”);
JMenuItem apagar = new JMenuItem(“Apagar”);
JMenuItem sair = new JMenuItem(“Sair”);
//anexa os itens ao menu Aplicacao
aplicacao.add(juntar);
aplicacao.add(apagar);
aplicacao.add(sair);
//anexa o menu Aplicacao a barra de menus
menu.add(aplicacao);

//Cria o menu ferramentas
JMenu ferramentas = new JMenu (“Ferramentas”);
//Cria os itens do menu ferramentas
JMenuItem copiar = new JMenuItem(“Copiar”);
JMenuItem recortar = new JMenuItem(“Recortar”);
JMenuItem colar = new JMenuItem(“Colar”);
//Acopla os itens acima ao menu ferramentas
ferramentas.add(copiar);
ferramentas.add(recortar);
ferramentas.add(colar);
//acopla o menu ferramentas à barra de menus

//anexa o a barra de menus à janela do aplicativo
setJMenuBar(menu);

//atribui propriedades adicionais para os itens de cada menu
//menu Applicacao
aplicacao.setMnemonic(KeyEvent.VK_O);
juntar.setMnemonic(KeyEvent.VK_U);
juntar.setToolTipText(“Juntar ambos os campos”);
apagar.setMnemonic(KeyEvent.VK_P);
apagar.setToolTipText(“Limpe todos os campos”);
sair.setMnemonic(KeyEvent.VK_I);
sair.setToolTipText(“Sair deste aplicativo”);
//menu ferramentas
ferramentas.setMnemonic(KeyEvent.VK_F);
copiar.setMnemonic(KeyEvent.VK_C);
copiar.setToolTipText(“Copie para area de seleção”);
recortar.setMnemonic(KeyEvent.VK_R);
recortar.setToolTipText(“Recorte para area de seleção”);
colar.setMnemonic(KeyEvent.VK_L);
colar.setToolTipText(“Escolha uma opção de cola no menu interativo”);
//barra de menus=
menu.setToolTipText(“Esse menu pode ser acessado por meio das teclas de atalho ‘alt + letra sublinhada’”);

//Configura a função de cada item dos menus
//menu Aplicacao
juntar.addActionListener (
new ActionListener() {
public void actionPerformed(ActionEvent evento){
JOptionPane.showMessageDialog(null,"Seu nome completo é : " + campo1.getText() + " " + campo2.getText());
}
}
);

apagar.addActionListener(
new ActionListener () {
public void actionPerformed(ActionEvent evento){
campo1.setText(" “);
campo2.setText(” ");
}
}
);

sair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent evento){
System.exit(DISPOSE_ON_CLOSE);
}
}
);

//Configura label e textfield do nome
nome = new JLabel(“Nome”);
nome.setToolTipText(“Escreva seu nome no campo ao lado”);
container.add(nome);
campo1 = new JTextField (15);
container.add(campo1);

//Configura label e textfield do sobrenome
sobrenome = new JLabel (“Sobrenome”);
sobrenome.setToolTipText(“Escreva seu sobrenome no campo ao lado”);
container.add(sobrenome);
campo2 = new JTextField (15);
container.add(campo2);

//Proriedade do botão juntar
Icon join = new ImageIcon(“Imagens/join.png”);
JButton botao1 = new JButton(“Juntar campos”,join);
botao1.setMnemonic(KeyEvent.VK_J);
botao1.setToolTipText(“Une o nome ao sobrenome”);
container.add(botao1);

//Propriedades do botão apagar
Icon erase1 = new ImageIcon(“Imagens/lixeira_vazia.png”);
@SuppressWarnings(“unused”)
Icon erase2 = new ImageIcon(“Imagens/lixeira_jogar.png”);
JButton botao2 = new JButton(“Apagar”,erase1);
//botao2.setRolloverIcon(erase2);
botao2.setMnemonic(KeyEvent.VK_A);
botao2.setToolTipText(“Limpa os campos nome e sobrenome”);
container.add(botao2);

//Propriedades do botao sair
Icon gout = new ImageIcon(“Imagens/sair.png”);
JButton sair1 = new JButton(“Sair”,gout);
sair1.setToolTipText(“Sair do aplicativo”);
sair1.setMnemonic(KeyEvent.VK_S);
container.add(sair1);

resultado = new JLabel("");
container.add(resultado);

//Configura as funções de cadaa botão

//Configura a ação do botão juntar
botao1.addActionListener (
new ActionListener() {
public void actionPerformed (ActionEvent evento){
JOptionPane.showMessageDialog (null,"Seu nome completo é : " + campo1.getText() + " " + campo2.getText());

 }

}
);

//Configura a ação do botão limpar
botao2.addActionListener(
new ActionListener() {
public void actionPerformed (ActionEvent evento){
campo1.setText(" “);
campo2.setText(” ");
repaint();
}
}
);

//Configura a ação do botao sair
sair1.addActionListener(
new ActionListener() {
public void actionPerformed (ActionEvent evento){
System.exit(DISPOSE_ON_CLOSE);
}
}
);

setSize(525,130);
setVisible(true);
}
public static void main(String[] args){
//instancia a aplicação para que possa ser executada
TesteJButton aplicacao = new TesteJButton();
aplicacao.setLocation(350,350);
aplicacao.setResizable(false);
aplicacao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}

o codigo está devidamente comentado,para faciliatar a leitura.
vlw ai por quem ajudar,e por favor quando escrever pode falar detalhadamente,pq tem coisas que ainda eu não intendo. :slight_smile:

qual ide você está usando?

caso esteje usando eclipse clique no menu file e export em seguida java e jarfile

no netbeans quando você compila ele gera o .jar que fica na pasta do seu projeto no diretório dist.

ok,o arquivo jar é gerado mas os meus icones que acompanham a aplicação é algo aparte.
por exemplo : Se eu mudo o arquivo jar fora da pasta aonde as minhas imagens estão armazenadas,elas não aparecem.
É esse o meu problema,e queria saber se tem alguma coisa pra resolver este problema.

O Eclipse tem um plugin do FatJar ele move tudo para dentro do jar, mas, para ler os arquivos deve-se usar metodos diferenres

Não sei se você sabe mas o Jar é um arquivo Zip disfarçado, tente abrir ele com o winrar para ver se seus icones estão la dentro

Veja no código se o comando para o ícone está assim:

btnNovo.setIcon(new ImageIcon(getClass().getResource("/icones/novo.png")));// ícone no botão, por exemplo

use o getClass().getResource() e depois gere o jar pelo FatJar, caso seu Eclipse não tenha instalado esse plugin (vc saberá se ao clicar no projeto dentro do eclipse com o botão direito do mouse ele estará entre as opções ou não), poderá baixar a última versão do Eclipse com ele instalado no site
[color=blue][size=18]http://www.tiacademicoweb.xpg.com.br/[/size][/color] no link download
ou neste mesmo site tem um tutorial mostrando como instalar este plugin no Eclipse, este no link tutorial.

os meu icones são configurados assim

Icon join = new ImageIcon("Imagens/join.png"); JButton botao1 = new JButton("Juntar campos",join);

a primeira linha chama a imagem a segunda cria o botão com a imagem.