Java编程实现一个能循环地自左向右移动的动画程序。

2026年09月25日 20:47
有2个网友回答
网友(1):

效果图

参考代码

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MoveTextFrame extends JFrame {
JLabel jl;//文字标签
int speed=2;//移动速度
public MoveTextFrame() {
jl = new JLabel("文字动画");
jl.setForeground(Color.RED);
add(jl);
setSize(380, 100);//窗口大小
setLocationRelativeTo(null);//窗口居中
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//设置定时器, 每隔25毫秒,改变一次文字标签的位置
Timer t = new Timer(25, new ActionListener() {
public void actionPerformed(ActionEvent e) {
int x = jl.getX()+speed;//计算移动后的位置
if(x>=390){//如果超过就指定像素,就重新从左边开水移动
x=-30;
}
jl.setLocation(x, jl.getY());//更新位置
//repaint();
}
});
t.start();
}
public static void main(String[] args) {
new MoveTextFrame();
}
}

网友(2):

package cn.ucai.fll;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Paint;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test02 extends JFrame {
 private JPanel contentPane;
 private int x=-100;
 private int y=100;
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     Test02 frame = new Test02();
     frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 public Test02() {
  setResizable(false);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(500, 200);
  setLocationRelativeTo(null);
  contentPane = new JPanel();
  setContentPane(contentPane);
  new PaintThread().start();  
 }
 public void paint(Graphics g) {
  contentPane.paint(g);
  Font font = new Font("宋体", Font.BOLD, 20);
  g.setFont(font);
  g.drawString("HelloWorld", x, y);
   x+=3; 
  if(x>500){  
   x=-100;
  }  
 }
 class PaintThread extends Thread{
  public void run(){
   while(true){
    repaint();
    try {
     Thread.sleep(40);
    } catch (InterruptedException e) {    
     e.printStackTrace();
    }
   }
  }
 } 
}