2012-07-04 58 views
0

我想使用swing顯示來自URL的Java圖像。我使用此代碼:ImageIO.Read大部分時間不工作?

BufferedImage pic = ImageIO.read(new URL("http://www.swpc.noaa.gov/SWN/g_curr.gif")); 
JLabel label1 = new JLabel(new ImageIcon(pic)); 
label1.setBounds(200,28,32,12); 
jp.add(label1); //jp is a JPanel. 

大約有四分之一的時間它的工作。其他時間沒有顯示,也沒有拋出異常。

+1

你確定它是'ImageIO.read(...)'的錯嗎?我懷疑是這樣。也許這是更基本的東西,比如你的標籤上的設置界限? –

+0

有問題的服務器是否正常工作,最好不要將'ImageIO'放到看臺上,而是詢問服務器,它工作正常嗎? –

+1

請確實看看這個[示例](http://stackoverflow.com/questions/11113159/background-image-in-a-nested-jpanel/11113479#11113479),如果我的電腦工作,因爲它是服務器,比你一定能看到圖像。 –

回答

0

我建議你創建一個JFrame,然後將你的JPanel添加到它。

這裏是我試過......

//necessary imports over here 

    class Test extends javax.swing.JFrame 
    { 
    public static void main(String args[]) throws MalformedURLException, IOException 
    { 

    Test inst = new Test(); 
    inst.setLocationRelativeTo(null); 
    inst.setVisible(true); 
    JPanel jp=new JPanel(); 
    BufferedImage pic = ImageIO.read(new URL("http://www.swpc.noaa.gov/SWN/g_curr.gif")); 
    JLabel label1 = new JLabel(new ImageIcon(pic)); 

    jp.add(label1); 
    jp.setVisible(true); 
    inst.add(jp); 
    inst.getContentPane().setLayout(new FlowLayout()); 
    inst.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
    inst.pack(); 
    inst.setSize(300,300); 

    } 
} 

此代碼是不是有效,但它ATLEAST給你的輸出。

希望它有幫助

+4

你爲什麼也調用'setBounds(...)'?如果您要提供建議,至少應該顯示原始海報正確使用版面管理器。 –

+0

是的,我同意你的意見。我應該在我的代碼中省略它。感謝您指出。我會在發佈答案的同時記住這些事情。 –