1

我试图制作一个显示图像 3 秒然后切换它的程序,但不是显示第一个图像等待然后显示第二个图像它的等待显示第一个图像然后显示第二个图像谢谢你的帮助

        JLabel image = new JLabel("");
        image.setBounds(100, 20, 125, 200);
        contentPane.add(image);
        image.addMouseListener(new MouseAdapter() {
              public void mouseClicked(MouseEvent me) {

                  image.setIcon(one);

                  try {

                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                  image.setIcon(two);

              }

            });
4

1 回答 1

3

尝试这样的事情:

image.setIcon(one);
javax.swing.Timer timer = new Timer(3000, new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
    image.setIcon(two);
    timer.stop();
  }
});

确保使用 javax.swing.Timer 而不是 java.util.Timer,因为您正在更新 Swing UI 组件。Swing Timer 在事件分派线程 (EDT) 上执行其回调。

话虽如此,请考虑将SwingWorker用于长时间运行的任务(即,如果您的示例中的图像文件很大)。文档建议使用上述方法仅执行小/短任务。

于 2018-12-18T21:37:30.750 回答