2017-01-17 26 views
0

我們只是說我有一個帶有文本的jlabel。而且我希望文字每秒都在左側改變,就像在廣告牌上運行文字一樣。如何用jlabel創建運行文本?

可能嗎?如果是的話,怎麼樣?

+0

這通常被稱爲「跑馬燈效應」順便說一句,是的,和其他所有事情一樣,這是非常可能的。你知道如何移動文本或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持有人能夠使用它的內部類或lambda內。