Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图像赢得';不会出现在JFrame上_Java_Swing_Jframe_Jpanel - Fatal编程技术网

Java 图像赢得';不会出现在JFrame上

Java 图像赢得';不会出现在JFrame上,java,swing,jframe,jpanel,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 ima

这是我的代码:

    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();
    }
}    
问题是框架打开了,但是它是空的,并且图像从未出现
提前感谢

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

ImageIcon image=newimageIcon(“images/senzu.jpg”)

这会奏效的

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

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


希望它能解决您的问题。

我建议您使用
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)
    }
    

我希望这解决了问题,并为您提供了一些其他有用的提示。

您确定该文件存在吗?代码在我运行时显示图片。您可能需要将标签添加到
BorderLayout.CENTER
以便自动调整其大小。您可以查看JavaDoc以了解更多信息。我还建议使用
ImageIO.read
将图像加载到
ImageIcon
(直接)上,有关更多详细信息,请参阅下一票是什么?我检查了代码,它运行并显示图像。请解释一下。顺便说一句-还不是投票人,但我看不出这个答案如何为解决方案添加任何有用的东西。我也用jpeg检查过,它是有效的。不添加任何有用的解决方案意味着什么?我认为给出一个解决问题的答案就足够了。谢谢。“给出一个解决问题的答案”很明显,你有信心这些建议会提供解决方案,但这并不能使它成为现实。第一个建议是从路径中剥离根驱动器并使其相对。完整的驱动器+路径总是比相对路径更“可靠”。第二个建议返回到建议与原始路径或文件名不相似的完整路径。那怎么能解决问题呢?谢谢你提供的信息,先生。我会记住这一点