2016-04-29 35 views
1

出现,这是我的代码:图像不会在JFrame的

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

的问题是,该框架将打开,但其空和图像不会出现在提前 感谢

+0

您确定该文件存在吗?代码在运行时显示图片。 – Breeze

+0

您可能需要将标签添加到'BorderLayout.CENTER',以便它自动调整大小。您可以查看JavaDoc以获取更多信息。 – AlBlue

+0

我还建议使用'ImageIO.read'通过'ImageIcon'直接加载图像,请参阅[读取/加载图像](http://docs.oracle.com/javase/tutorial/2d/images /loadimage.html)了解更多详情 – MadProgrammer

回答

1

我建议你使用getClass.getResource,因为如果你以后想要将项目编译为.jar文件,图像将随项目一起提供,否则如果沿着最初启动的解决方案路径行进,它们将不会出现上。

  • 制作一个文件夹中包凡主类位于内侧。最好叫“水库”
  • 将您的图像该程序包。
  • 初始化的图像图标是这样的:

    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

我建议你创建您的项目目录中的文件夹名为图片。然后给路径,因为这:

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

这将工作。

如果你需要一个绝对路径,然后使用

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

希望它可以解决您的问题。

+0

为什么downvote?我检查了代码,它运行并显示图像。请解释。 – MVK059

+1

顺便说一句 - 不是下来的选民(但),但我不明白这个答案如何增加任何有用的解决方案。 –

+0

我也用jpeg检查过,它能正常工作。通过不添加任何有用的解决方案意味着什么?我认为给出一个解决问题的答案已经足够好了。谢谢 – MVK059