这是我的代码
import javax.swing.*;
public class Option extends JFrame{
ImageIcon img = new ImageIcon("image.png");
ImageIcon img2 = new ImageIcon("image2.png");
JButton testBut = new JButton(img);
JButton testBut2 = new JButton(img2);
JPanel pnl = new JPanel();
public Option(){
super("Swing Window");
setSize( 500,200 );
setDefaultCloseOperation(EXIT_ON_CLOSE);
pnl.add(testBut);
pnl.add(testBut2);
add(pnl);
setVisible(true);
}
public static void main(String[] args){
Option gui = new Option();
}
}
我将两个图像都放在与类文件相同的目录中,并且按钮显示为空白。我对 Java 很陌生,所以我想不出这是错误的任何原因。
编辑
图像与选项类位于同一目录中
最佳答案
"The images are in the same directory as the Option class"
ImageIcon(String)
试图在工作目录的上下文中(从执行程序的位置)查找命名图像,但它将失败,因为图像实际上不存在于其中.
图像包含在应用程序上下文中(当您的应用程序被打包时,图像将嵌入到 Jar 中)。
相反,您应该尝试使用...
img = new ImageIcon(getClass().getResource("image.png"));
来自类的构造函数。这将尝试查找与在应用程序类路径上下文中调用 getResource
的类的包相关的图像
我还鼓励使用 ImageIcon
的 ImageIO.read
有两个原因,一是保证在调用该方法时加载图像(而不是已在某些后台线程中加载),第二,如果由于某种原因无法加载图像,它将抛出 IOException,这会更有帮助
看看Reading/Loading an Image了解更多详情
关于java - 我无法显示我的 ImageIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538434/