[RESOLVIDO]JButton colocar uma imagem ou icon

7 respostas
java
S

Glr to tentando colocar uma imagem no meu JButton mas não consigo, eu to esquecendo algo no código? eu fiz esse código só pra ver como eu iria colocar a imagem, mas eu já procurei, vi alguns mas em nenhuma postagem que eu encontrei tinha alguma coisa muito explicita sobre como colocar. o botão continua normal mas ele omite o que ta escrito e coloca 3 pontinhos, assim “e…” (no caso do que já está no código)

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Evolua {
    static JFrame janela;
    static JPanel painel;
    static JButton obj;
    public static void main(String[] args) {
        janela = new JFrame();
        painel = new JPanel();
        obj = new JButton("evo", new ImageIcon("espada.png"));
        obj.setSize(200, 300);
        obj.repaint();
        janela.setBounds(0, 0, 300, 300);
        painel.setBounds(0, 0, 300, 300);
        janela.getContentPane().add(painel);
        janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        painel.add(obj);
        janela.setVisible(true);
    }
    
}

7 Respostas

FacaNaCaveira

Fala ai samlis bom dia,

Cara peguei teu codigo, colei no meu eclipse e ai não tinha esse espada.png inclui uma imagem padrão do windows la, a unica coisa diferente foi que inclui o path da imagem no ImageIcon assim:

janela = new JFrame();

painel = new JPanel();

obj = new JButton(evo, new ImageIcon(C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg));

E apareceu a imagem de boa no botão. Acredito que seu problema possa ser que você não esteja passando o path da imagem.
Abraços
Max

S

é pq a imagem ta dentro do próprio pacote do projeto que é como eu tenho feito em outros projeto, mas vo pegar o caminho todo até a pasta d o projeto do netbeans e usar pra ver o que acontece.

realmente, tem que colocar o caminho inteiro até a img pra poder encontrar. vlw cara

S

Agr to com outro problema, a imagem não aparece se o painel que to usando tiver com layout null, como eu faço? eu preciso que o layout do panel seja null

staroski

Qual o motivo de precisar layout null?

S

Pq eu considero melhor pra min já que eu tenho mais liberdade com os componentes que insiro, pra min ta sendo muito mais vantajoso usar assim, principalmente quando eu tenho q lidar com imagens no panel ou no frame, tem sido muito mais facil

staroski

Não, não utilize caminhos absolutos.
Ao invés disso, utilize o método getClass().getResourceAsStream("/Penguins.jpg") para obter um InputStream da imagem a partir da raíz do classpath de sua aplicação. Atente ao uso da "/" no começo da String,

S

descobri o erro, eu dei mancada e não percebi que ele tava alterando o diretorio, então ele nunca encontraria a img, ams eu vo fazer o que vc disse Staroski, o que vc disse tbm tava faltando, é pq antes não tava indo, mas acho que ja sei o que fiz de errado na hora, vlw glr

Criado 29 de agosto de 2018
Ultima resposta 29 de ago. de 2018
Respostas 7
Participantes 3