2013-11-27 135 views
1

我在這裏有一個簡單的Java腳本,它不起作用。我有一個來自URL的圖像數組。當我點擊按鈕時,我希望它改變。單擊按鈕時更改URL圖像

import java.awt.BorderLayout; 
import java.awt.Image; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.net.URL; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class ChangeURLImages 
{ 
public static void main(String[] args) 
{ 
    final String[] array = new String[]{"http://s3.amazonaws.com/37assets/svn/765-default-avatar.png", "http://indianraga.in/assets/default-bf4b832252a9579cf3408c88b2601a0e.jpg"}; 
    BufferedImage image = null; 
    try { 
     URL url = new URL(array[0]); 
     image = ImageIO.read(url); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    JFrame f = new JFrame(); 
    f.setVisible(true); 
    f.setSize(500, 600); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    final JLabel label = new JLabel(new ImageIcon(image)); 
    JButton change = new JButton("Change"); 

    JPanel p = new JPanel(new BorderLayout()); 

    p.add(change, BorderLayout.NORTH); 
    p.add(label, BorderLayout.CENTER); 

    f.add(p); 

    change.addActionListener (new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      URL url; 
      try { 
       url = new URL(array[1]); 
       BufferedImage image = ImageIO.read(url); 
       JLabel label = new JLabel(new ImageIcon(image)); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

     } 
    }); 

} 
} 

我試過並嘗試過。不同的方式,但我無法做到這一點。

有人可以幫助我嗎? 謝謝。

回答

3

您正在創建一個Label的新實例,並且無所作爲。您必須更改容器內已有的標籤。

label.setIcon(new ImageIcon(image));代替JLabel label = new JLabel(new ImageIcon(image));

1

在你的事件處理程序,創建一個新的JLabel,但從來沒有得到顯示新的JLabel因爲你與它無關。它不會取代舊圖像顯示的舊JLabel。

更改行:

JLabel label = new JLabel(new ImageIcon(image)); 

在事件處理這樣的:

label.setIcon(new ImageIcon(image)); 

這改變已經被顯示在標籤上的圖標。

+0

它的工作原理。非常感謝你。 – onlize

+0

如果能幫助解決問題,請[接受](http://meta.stackexchange.com/a/65088/155831)。 *「你知道我該如何調整這些圖片嗎?」*「調整圖片大小」對於「加載多個資源」是一個完全不同的問題 - 請在新問題上提問(搜索網站後等)。 –