Novato em Java

21 respostas
W

Boa tarde a todos, como um bom novato estou completamente perdido, estou querendo colocar ícones no java, nos botões por exemplo e não estou conseguindo. Segui vários tutorias mas n consegui, se algu´me puder me mandar um exemplo com um passo a passo, ficarei muito grato.

21 Respostas

Z

bom, se você utiliza o netbeans para criar seus projetos existe nele mesmo um campo nas propriedades chamado icon/icone selecione seu JBotton e vá em propriedades e ache icon/icone e escolha o caminho da imagem

G

Qual ide você esta utilizando?
voce ta utilizando swt,swing o q?

W

Eclipse + Swing

G

vo te da exemplo

cria o imageIcon

ImageIcon exit = new ImageIcon(getClass().getResource("exit.png"));

cria o botao passando como parametro o icone

JButton bexit = new JButton(exit);
W

Ainda não consegui, por algum motivo não consigo fazer o ícone aparecer, sei que é coisa boba,mas como sou novato não sei o que pode ser. Eu não tenho que colocar o caminho do ícone?

doug

Olá

Essa imagem(.png) deve estar junto do seu pacote do src por exemplo. Se estiver fora das classes nao funciona.

Espero ter ajudado
Flwss

Matheus_Prado

vai um exemplo aqui…

ImageIcon imagem = new ImageIcon(“sair.png”);
JButton Sair = new JButton(“Sair”, image);

abraço.!

W

não consigo colocar o tal do ícone nos botões, estou aprendendo java por minha conta e estou tendo muita dificuldade, escrevo os código mas quando executo nada dos ícones, não sei aonde coloca-los para que apareçam.
Será que alguém podeme passar um código pronto que o tenha?
Grato pela atenção

ViniGodoy

Posta teu código aí, que a gente ajuda a corrigir… mas só falar que não funciona deixa as coisas um tanto abstratas para nós…

W

Esse é o código, tenho hábito de fazer trechos de códigos que não tenho costume, principalmente quando ainda estou "crú".
Valeu

import javax.swing.*;

public class Estudos extends JFrame {

	ImageIcon imagem = new ImageIcon("icon.gif");
	// JButton Teste = new JButton("Teste", imagem);
	private JButton Teste;

	private static final long serialVersionUID = -641074966110381298L;

	public Estudos() {
		super("A classe JFrame");

		// Define o ícone para a janela
		ImageIcon icone = new ImageIcon("icon.gif");
		setIconImage(icone.getImage());
		add(getTeste());
		setSize(350, 250);
		setVisible(true);
	}

	/**
	 * @return the sair
	 */
	private JButton getTeste() {
		if (Teste == null) {
			Teste = new JButton("Teste", imagem);
		}
		return Teste;
	}

	public static void main(String args[]) {
		Estudos app = new Estudos();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
ViniGodoy

Você pode editar o seu post aí em cima usando essas dicas?
http://www.guj.com.br/posts/list/50115.java

Senão fica muito difícil de ler.

W

Desculpa, não conhecia o recurso, valeu pela diva

allyssonluan

Hey…

Acho que seria uma boa ideia você migrar para o Netbeans em aplicações Swing, ele fornece muito mais recursos do que o Eclipse!

Você consegui achar tutoriais sobre como construir aplicações Desktop show de bola no site do Netbeans!

ViniGodoy

Entranho whitecloud. Aqui funcionou normal.
Talvez o Java não tenha encontrado a sua imagem.

ViniGodoy

Como a idéia dele é estudar Swing, devo discodar de você. O Netbeans irá fazer tudo automaticamente, e ele gera um código bastante difícil de entender. Caso ele migre, vai passar um tempo sem usar o Matisse, e o trabalho será mais ou menos o mesmo.

Antes de partir para construção visual, é uma boa conhecer bem como os componentes do Swing trabalham.

W

e como faço para ele encontrar a imagem, onde ela deve ficar?
Valeu

ViniGodoy

Se você usar o getResource, ela deverá ficar no seu classPath:

getClass().getResource("/icon.gif")

Ou seja, se sua aplicação tem o pacote br.com.aplicacao.imagens, obter o icon.gif ficará assim:

getClass().getResource("/com/br/aplicacao/imagens/icon.gif")

Se não usar o getResource(), a imagem deverá ficar no caminho onde a aplicação é executada. E esse varia de acordo com a IDE utilizada, ou mesmo com a forma que o atalho de seu usuário está configurado.

Note que com o getResource() é possível deixara as imagens até mesmo dentro do .jar de sua aplicação. Entretanto, no .jar o java fará distinção entre letras maiúsculas e minúsculas.

W

fazendo com getresource estou tendo erro de null pointer

Exception in thread "main" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at Estudos.<init>(Estudos.java:8)
	at Estudos.main(Estudos.java:35)

segue o código

import javax.swing.*;
import br.com.imagens.*;
public class Estudos extends JFrame {

	//ImageIcon imagem = new ImageIcon("icon.gif");
	// JButton Teste = new JButton("Teste", imagem);
	ImageIcon imagem = new ImageIcon(getClass().getResource("C:/icon.gif"));
	private JButton Teste;

	private static final long serialVersionUID = -641074966110381298L;

	public Estudos() {
		super("A classe JFrame");

		// Define o ícone para a janela
		ImageIcon icone = new ImageIcon("icon.gif");
		setIconImage(icone.getImage());
		add(getTeste());
		setSize(350, 250);
		setVisible(true);
	}

	/**
	 * @return the sair
	 */
	private JButton getTeste() {
		if (Teste == null) {
			Teste = new JButton("Teste", imagem);
		}
		return Teste;
	}

	public static void main(String args[]) {
		Estudos app = new Estudos();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}
ViniGodoy

É que com o getResource você não deve usar “C:/”
Você deve colocar a imagem num local do seu classpath.

Pois o getResource() será relativo a esse classpath, e não ao disco. Geralmente, basta colocar na mesma pasta onde seus fontes estão.

W

Valeu mesmo, vou dar uma olhada mais a fundo no getResource.
Uma outra pergunta, estou estudando o padrão MVC, estou separando tudo em classes e pacotes diferentes relativos ao que irão fazer, é um pouco complicada e demorada este tipo de programação, mas pelo que andei pesquisando esse é o melhor padrão. Esta informação está correta?
valeu

ViniGodoy

Sim, é um bom padrão. E muito adotado hoje em dia.

Entretanto, a organização das camadas muda se sua aplicação for desktop ou web. Como aplicações desktop geralmente são monolíticas (isso é, todas as camadas estão no mesmo software), você pode simplificar muito o modelo, em especial, a camada de controle.

Criado 13 de outubro de 2009
Ultima resposta 15 de out. de 2009
Respostas 21
Participantes 7