我不知道为什么我的图像没有显示在框架上

时间:2014-07-22 01:09:57

标签: java swing user-interface label

所以,我不知道为什么我的图像没有显示,因为我把图像放在正确的文件夹中,我相信下面的代码是正确的。此代码的结果只是一个空白的白框背景。我认为图像已损坏,但我尝试了不同的图像,结果相同。无论如何,如果有人能解决这个问题,我将非常感激。

package fia_project;
import java.awt.Color;
java.awt.*;
import javax.swing.*;



     public class Fia_test extends JFrame {
     public Frame kenny;

    public Fia_test(){
    super("");

    setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    setVisible(true);
    setSize(350, 100); 
    Container pane = getContentPane();
    getContentPane().setBackground(Color.WHITE); 

    ImageIcon icon = new ImageIcon("speaker.png");
    JLabel label2 = new JLabel(icon);
    add(label2);
       }


    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    // TODO code application logic here
    Fia_test t = new Fia_test();


  }
  }

1 个答案:

答案 0 :(得分:2)

使用ImageIO.read代替ImageIcon,因为如果无法加载图像会产生错误,对诊断更有用。见Reading/Loading an Image

ImageIcon(String)期望指定的String表示文件系统上的文件。从代码的外观来看,您可能已将图像放在代码的源目录中。

假设图像已捆绑到生成的Jar文件中,您将无法再像访问文件系统中的文件一样访问该图像,但需要使用Class#getResource加载它...

例如......

BufferedImage img = ImageIO.read(getClass().getResource("speaker.png"));
ImageIcon icon = new ImageIcon(img);

假设speaker.png与类文件位于同一目录中。