单击按钮时更改URL图像
问题描述:
我在这里有一个简单的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();
}
}
});
}
}
我试过并尝试过。不同的方式,但我无法做到这一点。
有人可以帮助我吗? 谢谢。
答
您正在创建一个Label的新实例,并且无所作为。您必须更改容器内已有的标签。
label.setIcon(new ImageIcon(image));
代替JLabel label = new JLabel(new ImageIcon(image));
答
在你的事件处理程序,创建一个新的JLabel,但从来没有得到显示新的JLabel因为你与它无关。它不会取代旧图像显示的旧JLabel。
更改行:
JLabel label = new JLabel(new ImageIcon(image));
在事件处理这样的:
label.setIcon(new ImageIcon(image));
这改变已经被显示在标签上的图标。
它的工作原理。非常感谢你。 – onlize
如果能帮助解决问题,请[接受](http://meta.stackexchange.com/a/65088/155831)。 *“你知道我该如何调整这些图片吗?”*“调整图片大小”对于“加载多个资源”是一个完全不同的问题 - 请在新问题上提问(搜索网站后等)。 –