【问题标题】:JButton ImageIcon not workingJButton ImageIcon 不工作
【发布时间】:2015-07-25 05:30:03
【问题描述】:

所以我试图获得一个指定的图像作为 Jbutton 的 “外观”,但它只是不起作用。有什么想法吗?

代码:

JButton btnClose = new JButton("Close");
    try {
        Image img = ImageIO.read(Window.class.getResource("resources/quit_button.bmp"));
        btnClose.setIcon(new ImageIcon(img));
      } catch (IOException ex) {
      }

btnClose.setVisible(true);
btnClose.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        frame.dispose();
    }
});

我的图片路径是: C:\用户\ *用户*\workspace\Pede\pede_Exe\resources\quit_button.bmp

【问题讨论】:

  • Window 是你的课吗?
  • 是的,这会引起问题吗?
  • 不,只是问......你应该通过ClassName.class.getProtectionDomain().getCodeSource().getLocation().getPath()检查你的类路径到底是什么,检查你的文件路径是否正确
  • 你们班的包是什么?类路径中有哪些目录?您的代码尝试从位于 Window 类包的子包资源中的类路径加载图像。

标签: java jbutton imageicon


【解决方案1】:

“不工作”不是很多,但我怀疑 ImageIO 在设置图标之前抛出异常。这通常(但不完全是)因为您的路径错误。

首先,打印您的堆栈跟踪。对你来说应该是,

ex.printStackTrace();

在你的 catch 块中。该堆栈跟踪是有问题的代码的箭头,并且通常附有简单的英语解释。养成习惯,你不会后悔的。

其次,请确保您在正确的位置寻找您的图像。最简单的方法可以在这里找到:Find where java class is loaded from

如您所见,有很多可能性。如果你的类的路径和你的资源的路径不是真实的,那么 ImageIO 将找不到你的图标。

【讨论】:

    猜你喜欢
    • 2013-12-21
    • 2013-05-14
    • 2012-06-08
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2019-03-12
    • 2012-10-24
    • 2011-02-20
    相关资源
    最近更新 更多