📅  最后修改于: 2023-12-03 14:56:22.024000             🧑  作者: Mango
本文介绍了用于移动文本的 Java 代码片段。以下示例使用了小程序和线程来展示移动文本的功能。
import javax.swing.*;
public class TextMover extends Thread {
private JLabel label;
private int startX;
private int endX;
private int delay;
public TextMover(JLabel label, int startX, int endX, int delay) {
this.label = label;
this.startX = startX;
this.endX = endX;
this.delay = delay;
}
@Override
public void run() {
try {
while (true) {
for (int x = startX; x <= endX; x++) {
SwingUtilities.invokeLater(() -> {
label.setLocation(x, label.getY());
});
Thread.sleep(delay);
}
for (int x = endX; x >= startX; x--) {
SwingUtilities.invokeLater(() -> {
label.setLocation(x, label.getY());
});
Thread.sleep(delay);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Text Mover");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
JLabel label = new JLabel("Hello, World!");
label.setBounds(50, 50, 100, 20);
frame.add(label);
TextMover mover = new TextMover(label, 50, 200, 10);
mover.start();
frame.setSize(300, 200);
frame.setVisible(true);
}
}
此示例中的 TextMover
类继承了 Thread
类,实现了移动文本的功能。它接受一个 JLabel
对象作为参数,以及起始位置、结束位置和延迟时间。在 run
方法中,使用 SwingUtilities.invokeLater
方法更新图形界面上的文本位置,并通过 Thread.sleep
方法控制移动的延迟时间。该线程将连续不断地移动文本,直到线程被中断。
主方法创建了一个窗口,并添加了一个显示 "Hello, World!" 的标签。接下来,创建了一个 TextMover
实例,并以起始位置为 (50, 50),结束位置为 (200, 50),延迟时间为 10 毫秒来初始化。最后,设置窗口的大小并显示出来。
注意:此代码是一个简单示例,仅用于展示移动文本的基本原理。在实际应用中,可能需要根据具体需求进行修改和扩展。
希望以上内容对您有所帮助!