Duvida ao gerar arquivo *.jar

7 respostas
L

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.<em>;

import java.awt.event.</em>;

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);

<a href="//botao2.setRolloverIcon">//botao2.setRolloverIcon</a>(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:

7 Respostas

M

qual ide você está usando?

M

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

M

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

L

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.

heroijapa

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

G

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.

L

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.

Criado 14 de janeiro de 2011
Ultima resposta 16 de jan. de 2011
Respostas 7
Participantes 4