Java 半秒钟后更新JLabel中包含的图片

Java 半秒钟后更新JLabel中包含的图片,java,swing,jframe,jlabel,imageicon,Java,Swing,Jframe,Jlabel,Imageicon,我想创建一个狼奔跑的简单动画。要做到这一点,我有一个狼的运行运动9 png。按下启动按钮时,它将显示屏幕上的所有摆动元素。然后,当按下wolf_run按钮时,我希望JLabel wolf将其图标更改为“wolf2.png”、“wolf3.png”、“wolf4.png”,直到“wolf9.png”,然后再返回到“wolf1.png”。这两个图标之间的间隔为0.5秒。等待()函数和除更改JLabel中的映像以外的其他所有功能都可以工作。我尝试了许多方法,但似乎没有任何帮助。如果我在没有wait()

我想创建一个狼奔跑的简单动画。要做到这一点,我有一个狼的运行运动9 png。按下启动按钮时,它将显示屏幕上的所有摆动元素。然后,当按下wolf_run按钮时,我希望JLabel wolf将其图标更改为“wolf2.png”、“wolf3.png”、“wolf4.png”,直到“wolf9.png”,然后再返回到“wolf1.png”。这两个图标之间的间隔为0.5秒。等待()函数和除更改JLabel中的映像以外的其他所有功能都可以工作。我尝试了许多方法,但似乎没有任何帮助。如果我在没有wait()函数的情况下手动执行此操作,则它可以工作。但是我需要在程序运行时同时更改JLabel。请在执行过程中帮助我更改映像。 多谢各位

PS:我使用了JFrame表单来设计和实现程序中的GUI

import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class page2 extends javax.swing.JFrame {
static int i =2;

public page2() {
  initComponents();
  text_field.setVisible(false);
  wolf.setVisible(false);
  wolf_run.setVisible(false);
  jPanel.setVisible(false);
  jPanel.setOpaque(false);

}

public void wait(int a){
long b = (long)a;
Calendar za = Calendar.getInstance();
long t1 = za.getTimeInMillis();
  while (true) {
     Calendar zb = Calendar.getInstance();
long t2 = zb.getTimeInMillis();
if((t2==(t1+b))||(t2==(t1+b-1))||(t2==(t1+a+1))){
break;
}
}
}

private void initComponents() {

    start_button = new javax.swing.JButton();
    text_field = new javax.swing.JTextField();
    wolf_run = new javax.swing.JButton();
    jPanel = new javax.swing.JPanel();
    wolf = new javax.swing.JLabel();
    background2 = new javax.swing.JLabel();
    jPanel1 = new javax.swing.JPanel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setMinimumSize(new java.awt.Dimension(849, 499));
    setSize(new java.awt.Dimension(850, 500));
    getContentPane().setLayout(null);

    start_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/button_start.png"))); // NOI18N
    start_button.setToolTipText("click this button to start");
    start_button.setBorder(null);
    start_button.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
    start_button.setName("");
    start_button.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/button_start_go.png"))); // NOI18N
    start_button.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            start_buttonActionPerformed(evt);
        }
    });
    getContentPane().add(start_button);
    start_button.setBounds(290, 80, 310, 310);

    text_field.setFont(new java.awt.Font("Lucida Grande", 0, 22)); // NOI18N
    text_field.setHorizontalAlignment(javax.swing.JTextField.CENTER);
    text_field.setToolTipText("Type here");
    text_field.setFocusCycleRoot(true);
    getContentPane().add(text_field);
    text_field.setBounds(370, 390, 450, 60);

    wolf_run.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    wolf_run.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            wolf_runActionPerformed(evt);
        }
    });
    getContentPane().add(wolf_run);
    wolf_run.setBounds(630, 120, 190, 140);

    wolf.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wolf1.png"))); // NOI18N
    jPanel.add(wolf);

    getContentPane().add(jPanel);
    jPanel.setBounds(20, 320, 330, 150);

    background2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/backgroung2.png"))); // NOI18N
    getContentPane().add(background2);
    background2.setBounds(0, 0, 850, 500);
    getContentPane().add(jPanel1);
    jPanel1.setBounds(10, 320, 310, 160);

    pack();
}// </editor-fold>

private void start_buttonActionPerformed(java.awt.event.ActionEvent evt) {                                             
Calendar za = Calendar.getInstance();
  int m1 = za.get(Calendar.MINUTE);
  int s1 = za.get(Calendar.SECOND);
  while (true) {
     Calendar zb = Calendar.getInstance();
     int m2 = zb.get(Calendar.MINUTE);
     int s2 = zb.get(Calendar.SECOND);
     if (m2 != m1) {
        s2 = s2 + 60;
     }
     if (s2 == s1 + 1) {
        start_button.setVisible(false);
        start_button.setEnabled(false);
        text_field.setVisible(true);
        wolf.setVisible(true);
        wolf_run.setVisible(true);
        jPanel.setVisible(true);
        break;
     }
  }
  }                                            

private void wolf_runActionPerformed(java.awt.event.ActionEvent evt) {                                         
while(true){
wait(500);
        wolf.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wolf"+i+".png")));
 System.out.println("processing "+i);
i=i+1;
if(i>9)
{   i=1;}
}
}                                        

public static void main(String args[]) {
  try {
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
           javax.swing.UIManager.setLookAndFeel(info.getClassName());
           break;
        }
     }
  } catch (ClassNotFoundException ex) {
     java.util.logging.Logger.getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  } catch (InstantiationException ex) {
     java.util.logging.Logger.getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  } catch (IllegalAccessException ex) {
     java.util.logging.Logger.getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  } catch (javax.swing.UnsupportedLookAndFeelException ex) {
     java.util.logging.Logger.getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  }

  java.awt.EventQueue.invokeLater(new Runnable() {

     public void run() {
        new page2().setVisible(true);
     }
  });


}

private javax.swing.JLabel background2;
private javax.swing.JPanel jPanel;
private javax.swing.JPanel jPanel1;
private javax.swing.JButton start_button;
private javax.swing.JTextField text_field;
private static javax.swing.JLabel wolf;
private javax.swing.JButton wolf_run;

}
import java.util.Calendar;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.swing.JLabel;
导入java.awt.*;
导入java.awt.Image;
导入java.awt.image.buffereImage;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入javax.imageio.imageio;
导入javax.swing.ImageIcon;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类page2扩展了javax.swing.JFrame{
静态int i=2;
公共页2(){
初始化组件();
text_field.setVisible(假);
wolf.setVisible(false);
wolf_run.setVisible(假);
jPanel.setVisible(假);
jPanel.setOpaque(假);
}
公共无效等待(INTA){
长b=(长)a;
Calendar za=Calendar.getInstance();
longt1=za.getTimeInMillis();
while(true){
Calendar zb=Calendar.getInstance();
长t2=zb.getTimeInMillis();
如果((t2==(t1+b))| |(t2==(t1+b-1))| |(t2==(t1+a+1))){
打破
}
}
}
私有组件(){
start_button=newjavax.swing.JButton();
text_field=newjavax.swing.JTextField();
wolf_run=newjavax.swing.JButton();
jPanel=newjavax.swing.jPanel();
wolf=newjavax.swing.JLabel();
background2=newjavax.swing.JLabel();
jPanel1=newjavax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(新java.awt.Dimension(849499));
setSize(新java.awt.Dimension(850500));
getContentPane().setLayout(null);
start_button.setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/button_start.png”));//NOI18N
开始按钮。设置工具脚本文本(“单击此按钮开始”);
启动按钮。设置顺序(空);
start_button.setCursor(新java.awt.Cursor(java.awt.Cursor.HAND_Cursor));
开始按钮。设置名称(“”);
start_button.setPressedIcon(新的javax.swing.ImageIcon(getClass().getResource(“/button_start_go.png”));//NOI18N
start_button.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
启动按钮执行(evt);
}
});
getContentPane().add(开始按钮);
开始按钮。立根(290、80、310、310);
text_field.setFont(新java.awt.Font(“Lucida Grande”,0,22));//NOI18N
text_field.setHorizontalAlignment(javax.swing.JTextField.CENTER);
text_field.setToolTipText(“在此处键入”);
text_field.setFocusCycleRoot(真);
getContentPane().add(文本\字段);
文本字段.立根(370390450 60);
wolf_run.setboorder(javax.swing.BorderFactory.createBevelOrder(javax.swing.border.BevelOrder.RAISED));
wolf_run.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
已执行的wolf_运行操作(evt);
}
});
getContentPane().add(wolf_运行);
沃尔夫·鲁恩挫折(630、120、190、140);
setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/wolf1.png”));//NOI18N
jPanel.add(沃尔夫);
getContentPane().add(jPanel);
jPanel.setBounds(20320330150);
background2.setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/background2.png”);//NOI18N
getContentPane().add(background2);
背景2.挫折(0,0850500);
getContentPane().add(jPanel1);
jPanel1.setBounds(10320310160);
包装();
}// 
private void start_buttonActionPerformed(java.awt.event.ActionEvent evt){
Calendar za=Calendar.getInstance();
int m1=za.get(日历分钟);
ints1=za.get(日历秒);
while(true){
Calendar zb=Calendar.getInstance();
int m2=zb.get(日历分钟);
int s2=zb.get(日历秒);
如果(m2!=m1){
s2=s2+60;
}
如果(s2==s1+1){
启动按钮。设置可见(错误);
启动按钮。设置启用(错误);
text_field.setVisible(真);
wolf.setVisible(true);
wolf_run.setVisible(真);
jPanel.setVisible(true);
打破
}
}
}                                            
私有void wolf_runActionPerformed(java.awt.event.ActionEvent evt){
while(true){
等待(500);
setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/wolf”+i+”.png));
系统输出打印项次(“处理”+i);
i=i+1;
如果(i>9)
{i=1;}
}
}                                        
公共静态void main(字符串参数[]){
试一试{
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
if(“Nimbus”.equals(info.getName())){
setLookAndFeel(info.getClassName());
打破
}
}
}捕获(ClassNotFoundException ex){
getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(实例化异常){
getLogger(page2.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}捕获(非法访问例外){