图像不会出现在JFrame上

时间:2016-04-29 15:56:04

标签: java swing jframe jpanel

这是我的代码:

    import java.awt.BorderLayout;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    public class SenzuView extends JFrame {
      JLabel label;
      public SenzuView(){
        ImageIcon image = new ImageIcon("C:\\senzu.jpg");
        label = new JLabel("", image, JLabel.CENTER);
        this.add(label);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        new SenzuView();
    }
}    

问题是框架打开但是它是空的,图像永远不会出现 提前致谢

2 个答案:

答案 0 :(得分:1)

我建议您使用getClass.getResource,因为如果您以后想要将项目编译成.jar文件,图像将随项目一起提供,否则如果您继续使用解决方案路径,它们将不会出现最初开始。

  • 在包中包含主类所在的文件夹。最好称为“res”
  • 将图片移至该包裹。
  • 初始化图像图标如下:

    ImageIcon image = new ImageIcon(getClass().getResource("res/senzu.jpg"))
    
  • 以下是我建议你应该SenzuView编码的示例:

    public SenzuView(){
        setLayout(new BorderLayout());
        ImageIcon image = new ImageIcon(getClass().getResource("res/senzu.jpg"));
        label = new JLabel(image);
        this.add(label, BorderLayout.CENTER);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setVisible(true)
    }
    

我希望这解决了它并给了你一些其他有用的提示。

答案 1 :(得分:-1)

我建议您在项目目录中创建一个名为 images 的文件夹。然后给出这样的路径:

ImageIcon image = new ImageIcon("images/senzu.jpg");

这样可行。

如果您需要绝对路径,请使用

C:/Program Files/workspace/Senzu/images/senzu.jpg

希望它能解决你的问题。