无法获得跑马灯效果

问题描述:

可能重复:
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

你将不得不延长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