JButton不会显示图像

时间:2012-10-09 04:09:08

标签: jbutton imageicon

我正在编写应用程序并将自己的自定义窗口按钮作为设计的一部分。然而有一件事困扰着我。我将图像添加到我的jButton中:

ImageIcon iExit = new ImageIcon("icons/exit.png");
System.out.print(iExit.getIconHeight());
base.setLayout(null);

winex = new PINGButton(iExit);

但是我的测试中一直没有得到-1,所以我显然没有得到任何结果。然而,这不是文件的问题,当我为测试添加这些代码时,我没有任何异常:

try {
    BufferedImage img = ImageIO.read(getClass().getResource("icons/exit.png"));
} catch (IOException e) {
    System.out.println("yep");
}

我使用不同的输入运行它以确保但该文件路径有效。

这里有一些注意事项。我关掉了窗户装饰品。我不认为应该影响它,但应该说明一些事情。此按钮静态放置在窗口中的无布局jPanel中。我还设置了自定义颜色鼠标效果(可能有更好的方法来做到这一点,但atm这就是我正在使用的):

package main.java.com.hackathon.ping.objects;

import javax.swing.Icon;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class PINGButton extends JButton {

    private final Color defaultColor, hoverColor;

    /**
     * Keeping Eclipse Happy
     */
    private static final long serialVersionUID = 1L;

    public PINGButton(String text) {
        super(text);
        defaultColor = Color.WHITE;
        hoverColor = Color.LIGHT_GRAY;
        this.setBackground(defaultColor);
        addMouse();
        this.setBorderPainted(false);
        this.setIcon(getIcon());
    }

    public PINGButton(Icon i) {
        super(i);
        defaultColor = Color.WHITE;
        hoverColor = Color.LIGHT_GRAY;
        this.setBackground(defaultColor);
        addMouse();
        this.setBorderPainted(false);
    }

    public PINGButton(String text, Color main, Color hover) {
        super(text);

        defaultColor = main;
        hoverColor = hover;
        super.setBackground(defaultColor);
        addMouse();
        this.setBorderPainted(false);
    }

    private void addMouse() {
        super.addMouseListener(new MouseListener() {

            @Override
            public void mouseClicked(MouseEvent a) { /* NOTHING */}

            @Override
            public void mouseEntered(MouseEvent a) {
                doMouseEnt();
            }

            @Override
            public void mouseExited(MouseEvent a) {
                doMouseEx();
            }

            @Override
            public void mousePressed(MouseEvent arg0) {/* NOTHING */}

            @Override
            public void mouseReleased(MouseEvent arg0) {/* NOTHING */}

        });
    }

    public void doMouseEx() {
        this.setBackground(defaultColor);
        this.setIcon(getIcon());
    }

    public void doMouseEnt() {
        this.setBackground(hoverColor);
        this.setIcon(getIcon());
    }
}

图像尺寸不是问题,我已尝试将图像和按钮调整为多种尺寸,似乎没有任何变化。

有什么想法吗?

0 个答案:

没有答案