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.
Novato em Java
21 Respostas
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
Qual ide você esta utilizando?
voce ta utilizando swt,swing o q?
Eclipse + Swing
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);
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?
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
vai um exemplo aqui…
ImageIcon imagem = new ImageIcon(“sair.png”);
JButton Sair = new JButton(“Sair”, image);
abraço.!
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
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…
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);
}
}
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.
Desculpa, não conhecia o recurso, valeu pela diva
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!
Entranho whitecloud. Aqui funcionou normal.
Talvez o Java não tenha encontrado a sua imagem.
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.
e como faço para ele encontrar a imagem, onde ela deve ficar?
Valeu
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.
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);
}
}
É 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.
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
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.