我这里有一个简单的Java脚本,它不起作用。我有一个包含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();
}
}
});
}
}
我尝试过并尝试过。不同的方式,但我无法做到这一点。
有人可以帮我吗? 谢谢。
答案 0 :(得分:3)
您正在创建Label的新实例,并且不执行任何操作。您必须更改容器内已有的标签。
label.setIcon(new ImageIcon(image));
代替JLabel label = new JLabel(new ImageIcon(image));
答案 1 :(得分:1)
在事件处理程序中,您创建了一个新的JLabel,但是新的JLabel永远不会显示,因为您不对它执行任何操作。它不会替换旧图像显示的旧JLabel。
更改行:
JLabel label = new JLabel(new ImageIcon(image));
在您的事件处理程序中:
label.setIcon(new ImageIcon(image));
这会更改已显示的标签上的图标。