【问题标题】:How to create running text with jlabel?如何使用 jlabel 创建运行文本?
【发布时间】:2026-01-30 11:15:01
【问题描述】:

假设我有一个带有文本的 jlabel。我希望文本每秒都在向左变化,就像在广告牌上运行文本一样。

有可能吗?如果是,怎么做?

【问题讨论】:

  • 这通常被称为“选框效果”顺便说一句,是的,与其他一切一样,这是很有可能的。你知道如何移动文本或 JLabel 吗?
  • 是的,我知道。
  • 那么是什么阻止您将这些知识翻译成.makijg 滚动文本?

标签: java text netbeans jlabel graphical-programming


【解决方案1】:

您应该使用javax.swing.Timer 来安排JLabel 更新。请看下面的简化代码sn-p:

JFrame frame = new JFrame("Test");
frame.setSize(300, 300);
JLabel label = new JLabel("This is text!!!");
frame.add(label);
frame.setVisible(true);

final int labelWidth = 300;
final AtomicInteger labelPadding = new AtomicInteger();
Timer timer = new Timer(20, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        label.setBorder(new EmptyBorder(0, labelPadding.getAndIncrement() % labelWidth, 0, 0));
    }
});
timer.start();

请注意,AtomicInteger 不是必需的,但您需要一些 final 持有者才能在内部类或 lambda 中使用它。

【讨论】: