0

我使用 Java 构建了一个简单的接口,它说没有错误。但是它不能在按钮上显示 1ImageIcon1 (它只有按钮的名称。)。我该如何解决?

这是代码。

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);

}
4

2 回答 2

1

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

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

在这种情况下,您不能像普通文件一样访问它们,而是需要使用Class#getResourceor Class#getResourceAsInputStream,这取决于您的需要。

根据您的评论,我建议您需要使用

ImageIcon icon = new ImageIcon(getClass().getResource("ChenGao.jpg"));

或者可能

ImageIcon icon = new ImageIcon(getClass().getResource("/ChenGao.jpg"));

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

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

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

查看阅读/加载图像了解更多详情。

于 2013-11-14T05:09:35.290 回答
0

您可以阅读 Oracle 关于ImageIcon的在线 API 。使用相对路径,例如:

 new ImageIcon("src/ChenGao.jpg")
于 2013-11-14T09:06:50.727 回答