Давайте просто скажем, что у меня есть jlabel с текстом в нем. И я хочу, чтобы текст менялся каждую секунду влево, точно так же, как текст на рекламном щите.Как создать рабочий текст с помощью jlabel?
Возможно ли это? если да, то как?
Давайте просто скажем, что у меня есть jlabel с текстом в нем. И я хочу, чтобы текст менялся каждую секунду влево, точно так же, как текст на рекламном щите.Как создать рабочий текст с помощью jlabel?
Возможно ли это? если да, то как?
Вы должны использовать 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
держатель, чтобы иметь возможность использовать его внутри внутреннего класса или лямбда.
Это обычно называют эффектом «marquee effect», и да, как и все остальное, это очень возможно. Вы знаете, как перемещать текст или JLabel? – Carcigenicate
да, я знаю как. –
Тогда что мешает вам перевести это знание на прокрутку текста to.makijg? – Carcigenicate