2014-02-11 112 views
0

我正在使用NetBeans,并试图从我的磁盘加载图像。该方案不给我任何错误,但框架不弹出。 ?我尝试使用其他标签只有文本,它工作得很好。我不认为我的方法调用图像有什么问题,只是出于某种原因框架不会显示?java-谁能告诉我为什么这个图像不会加载?

import java.applet.Applet; 
import java.awt.*; 
import java.awt.image.*; 
import java.io.*; 
import java.net.URL; 
import javax.imageio.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Play { 

    /** 
    * @param args 
    *   the command line arguments 
    */ 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("window"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JLabel emptyLabel = new JLabel("yo"); 
     BufferedImage img = null; 
     try { 
      img = ImageIO.read(new File("C:\\Users\\anon\\Desktop\\alien.png")); 
     } catch (IOException e) { 
     } 

     emptyLabel.setPreferredSize(new Dimension(175, 100)); 
     frame.getContentPane().add(img, BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

} 
+3

考虑打印异常按摩而不是忽略异常。在catch块中添加'e.printStackTrace()'。 – Pshemo

+1

你怎么知道没有错?你明确地忽略了抛出的任何异常。 –

+0

您还需要FORWARD-SLASHES“C:/../.../.../。不是后向的 – zee

回答

3

这是否甚至编译?

frame.getContentPane().add(img, BorderLayout.CENTER); 

您正在尝试将BufferedImage添加到JPanel中。你可能打算创建一个JPanel并用这样的东西“添加”图像...

protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(img, 0, 0, this);   
} 
+2

+ 1或者只是将图像设置为ImageIcon并添加标签。emptyLabel.setIcon(new ImageIcon(img)); frame.add(emptyLabel);' –

+0

JLabel有什么问题?同时,您应该传递这作为ImageObserver参数drawImage – MadProgrammer

+0

@MadProgrammer谢谢,我添加了ImageObserver。(我犯了99%的时间将它设置为null。)JLabel也可以。 – whiskeyspider

相关问题