2011-04-21 68 views
1

可能重複:
Marquee effect in Java Swing無法獲得跑馬燈效果

我試圖獲得跑馬燈效果(我們在HTML相同)。但是我無法使用這段代碼。我如何改進此代碼以獲得選取框效果?

import java.awt.event.*; 
import javax.swing.*; 
import java.awt.*; 

class tester { 
JLabel l; 

tester() { 
JFrame fr=new JFrame(); 
JPanel p=new JPanel(); 
l=new JLabel(""); 
fr.add(p); 
p.add(l); 
fr.setVisible(true); 
fr.setSize(400,400); 
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public void MarqueeEffect() { 
    ActionListener ac = new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 
     l.setText("To action alone hast thou a right and never at all to its fruits let not the fruits of action be thy motive; neither let there be in thee any attachment to inaction"); 
    } 
    }; 
    new Timer(2000,ac).start(); 
} 

public static void main(String args[]) { 
    tester t=new tester(); 
    t.MarqueeEffect(); 
} 
} 
+0

這是功課,不是嗎?你有什麼嘗試? – 2011-04-21 17:06:27

回答

1

你將不得不延長JLabel並覆蓋paintComponent帶來跑馬燈效果。它不會僅僅通過設置文本來擴展JLabel。你可以在你自定義的JLabel類中做這樣的事情。

protected void paintComponent(Graphics g) 
{   
g.translate((int)((System.currentTimeMillis()/MARQUEE_SPEED_DIV) % (getWidth() * 2)) - getWidth(), 0);   
super.paintComponent(g);   
repaint(REPAINT_WITHIN_MS);  
} 
+0

+1 Affine,以及精闢。 – trashgod 2011-04-21 17:22:01