首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无ImageIcon显示

无ImageIcon显示
EN

Stack Overflow用户
提问于 2013-11-14 11:07:12
回答 2查看 238关注 0票数 0

我使用Java构建了一个简单的接口,它显示没有错误。但是,它不能在按钮上显示1ImageIcon1 (它只有按钮的名称)。我怎么才能修复它?

下面是代码。

代码语言:javascript
复制
public static void main(String[] args) {
    JFrame frame=new JFrame("Hi everyone");
    frame.setSize(500,400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel pane=new JPanel();

    Font font=new Font(Font.SERIF, Font.BOLD,20);
    JLabel label=new JLabel("How about a presidation quote");
    label.setFont(font);
    pane.add(label);


    ImageIcon icon=new ImageIcon("ChenGao.jpg");
    JButton ChenGao = new JButton("ChenGao",icon);
    ChenGao.setHorizontalTextPosition(SwingConstants.CENTER);
    ChenGao.setVerticalTextPosition(SwingConstants.BOTTOM);
    pane.add(ChenGao);

    JTextArea textArea= new JTextArea(10,40);
    textArea.setText("Yes we can");
    pane.add(textArea);

    frame.setContentPane(pane);
    frame.setVisible(true);

}
EN

回答 2

Stack Overflow用户

发布于 2013-11-14 13:09:35

一般来说,(至少)有两种类型的“资源”会被讨论,外部的和内部的。

外部资源是驻留在应用程序上下文之外的资源,例如文件系统上的文件。内部资源是驻留在应用程序上下文中的资源。这些资源也称为嵌入式资源,因为它们位于应用程序的类路径上下文中,通常位于一个或多个Jar文件中。

在这种情况下,您不能像访问普通文件一样访问它们,而需要根据需要使用Class#getResourceClass#getResourceAsInputStream

根据您的评论,我建议您使用以下两种方法之一

代码语言:javascript
复制
ImageIcon icon = new ImageIcon(getClass().getResource("ChenGao.jpg"));

或者也许

代码语言:javascript
复制
ImageIcon icon = new ImageIcon(getClass().getResource("/ChenGao.jpg"));

这取决于图像相对于试图加载它的类的位置。

如果图像包含在源目录的某个目录中,则可能还需要提供路径

因为如果由于某种原因导致加载失败,ImageIcon不会提供任何有用的信息,所以通常最好使用ImageIO来加载图像。这至少会在出现问题时抛出一个异常

有关更多详细信息,请查看Reading/Loading an Image

票数 1
EN

Stack Overflow用户

发布于 2013-11-14 17:06:51

您可以阅读Oracle关于ImageIcon的在线应用编程接口。使用相对路径,如:

代码语言:javascript
复制
 new ImageIcon("src/ChenGao.jpg")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19968769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档