2013-07-19 3 views
3

Я искал везде решение для этого и прочитал некоторые похожие сообщения, связанные с этой проблемой, но ни один из них не работал для меня.JButton Image Icon не отображается .png файл

Я пытаюсь показать изображение «b.png» на JButton, и когда я перевернусь по кнопке, значок изменится.

package GUI_JButton; 

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Gui extends JFrame { 

    private JButton reg; 
    private JButton custom; 

    public Gui() { 
     super("Title goes here"); 
     setLayout(new FlowLayout()); 

     reg = new JButton("reg button"); // create reg button 
     add(reg); // add reg button to JFrame 

     // initialize images 
     Icon b = new ImageIcon(getClass().getResource("images/imageA.png")); 
     Icon x = new ImageIcon(getClass().getResource("images/imageB.png")); 

     custom = new JButton("custom button", b); // create custom button 
     custom.setRolloverIcon(x); 
     add(custom); // add button to JFrame 

     HandlerClass handler = new HandlerClass(); 
     reg.addActionListener(handler); 
     custom.addActionListener(handler); 

    } 

    private class HandlerClass implements ActionListener { 

     public void actionPerformed(ActionEvent event) { 
      JOptionPane.showMessageDialog(null, 
        String.format("%s", event.getActionCommand())); 

     } 

    } 

} 

Изображения в папке изображений, которая находится в папке Src вместе с Gui.java файлом и TESTMain.java.

Ошибка, которую я получаю, является исключением из null-указателя из Main. Я пробовал

Icon b = new ImageIcon("images/imageA.png"); 

Это компилируется, но изображение не отображается. Я также попытался

custom = new JButton("custom", new ImageIcon("images/imageA.png")); 

И

custom = new JButton("custom", new ImageIcon(getClass().getResource("images/imageA.png")); 

Я знаю, что getClass().getResource() является prefferred, как нужно компилировать с банкой изображения.

Любые идеи по отображению моих изображений?

+0

Изменить 'getResource (" images/imageA.png ")' на 'getResource ("/images/imageA.png ")'. –

ответ

4

Ваша папка с изображениями должна быть в той же папке, что и ваши скомпилированные файлы .class, а не в src с вашими .java файлами.

+0

Это сработало, спасибо помощнику. – David