2017-01-17 3 views
0

Sagen wir einfach, ich habe ein Jlabel mit einem Text darin. Und ich möchte, dass der Text sich jede Sekunde nach links ändert, genau wie Text auf der Plakatwand.Wie erstellt man laufenden Text mit jlabel?

Ist es möglich? wenn ja, wie?

+0

Dies wird gemeinhin als "Marquee-Effekt" bezeichnet, und ja, wie bei allem anderen auch, ist dies sehr gut möglich. Weißt du, wie man Text oder ein JLabel bewegt? – Carcigenicate

+0

ja ich weiß wie. –

+1

Was hält Sie dann davon ab, dieses Wissen in.makijg Scroll-Text zu übersetzen? – Carcigenicate

Antwort

0

Sie sollten javax.swing.Timer verwenden, um JLabel Updates zu planen. Bitte finden Sie vereinfachte Codeausschnitt unten:

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(); 

Beachten Sie, dass AtomicInteger nicht notwendig ist, aber Sie müssen einige final Inhaber der Lage sein, es in innere Klasse oder Lambda zu verwenden.

Verwandte Themen