无法获得跑马灯效果
问题描述:
我试图获得跑马灯效果(我们在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();
}
}
答
你将不得不延长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
这是功课,不是吗?你有什么尝试? – 2011-04-21 17:06:27