Как создать бегущий текст с помощью jlabel?

Скажем так, у меня есть джабель с текстом. И я хочу, чтобы текст менялся каждую секунду влево так же, как текст на рекламном щите.

Является ли это возможным? если да, то как?

1 ответ

Решение

Вы должны использовать javax.swing.Timer планировать JLabel Обновления. Пожалуйста, смотрите упрощенный фрагмент кода ниже:

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 Держатель, чтобы иметь возможность использовать его внутри класса или лямбда.

Другие вопросы по тегам