2017-01-17 19 views
0

Давайте просто скажем, что у меня есть jlabel с текстом в нем. И я хочу, чтобы текст менялся каждую секунду влево, точно так же, как текст на рекламном щите.Как создать рабочий текст с помощью jlabel?

Возможно ли это? если да, то как?

+0

Это обычно называют эффектом «marquee effect», и да, как и все остальное, это очень возможно. Вы знаете, как перемещать текст или JLabel? – Carcigenicate

+0

да, я знаю как. –

+1

Тогда что мешает вам перевести это знание на прокрутку текста to.makijg? – Carcigenicate

ответ

0

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