如何在java swing中自动更改图像?

嗨,我正在创建一个java桌面应用程序,我想要显示图像,我希望所有图像应该每5秒自动更改我不知道如何做到这一点

这是我的代码

public class ImageGallery extends JFrame { private ImageIcon myImage1 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png"); private ImageIcon myImage2 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\d.jpg"); private ImageIcon myImage3 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\e.jpg"); private ImageIcon myImage4 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\f.jpg"); JPanel ImageGallery = new JPanel(); private ImageIcon[] myImages = new ImageIcon[4]; private int curImageIndex=0; public ImageGallery () { ImageGallery.add(new JLabel (myImage1)); myImages[0]=myImage1; myImages[1]=myImage2; myImages[2]=myImage3; myImages[3]=myImage4; add(ImageGallery, BorderLayout.NORTH); JButton PREVIOUS = new JButton ("Previous"); JButton NEXT = new JButton ("Next"); JPanel Menu = new JPanel(); Menu.setLayout(new GridLayout(1,4)); Menu.add(PREVIOUS); Menu.add(NEXT); add(Menu, BorderLayout.SOUTH); } 

我怎样才能做到这一点? 提前致谢

在此示例中, List保存从List选择的每个图像。 在javax.swing.Timer每一步,都会对图像列表进行混洗,并将每个图像分配给一个标签。

图片

 import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.UIManager; /** * @see http://stackoverflow.com/a/22423511/230513 * @see http://stackoverflow.com/a/12228640/230513 */ public class ImageShuffle extends JPanel { private List list = new ArrayList(); private List labels = new ArrayList(); private Timer timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { update(); } }); public ImageShuffle() { this.setLayout(new GridLayout(1, 0)); list.add(UIManager.getIcon("OptionPane.errorIcon")); list.add(UIManager.getIcon("OptionPane.informationIcon")); list.add(UIManager.getIcon("OptionPane.warningIcon")); list.add(UIManager.getIcon("OptionPane.questionIcon")); for (Icon icon : list) { JLabel label = new JLabel(icon); labels.add(label); this.add(label); } timer.start(); } private void update() { Collections.shuffle(list); int index = 0; for (JLabel label : labels) { label.setIcon(list.get(index++)); } } private void display() { JFrame f = new JFrame("ImageShuffle"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new ImageShuffle().display(); } }); } } 

实现目标的一种方法是设置swing.Timer每5秒通知其动作侦听器,将您的类设置为计时器的侦听器,并通过使用actionPerformed方法实现actionListener接口,该方法将使用其setImage方法更改所有图像。 代码应如下所示:

 public class ImageGallery extends JFrame implements ActionListener { Timer timer; public ImageGallery() { timer = new Timer(5000, this); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == timer) { for (int i=0; i 

}