我是初学者,想在jLabel中做个滚动字幕。
不知道<marquee>能应用于jLabel中吗?
如果能,请给出代码。
如果不能,请帮着解决。
谢谢了!!(一定要给出代码哦~~~~)

解决方案 »

  1.   

    public class rolllabel extends JFrame { private static final long serialVersionUID = -1L; private JPanel pane = null; private MoveLabel label = null; public rolllabel() {
    super("Test");
    pane = new JPanel();
    label = new MoveLabel("带有滚动效果的标签");
    pane.add(label);
    this.getContentPane().add(pane);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true);
    } public static void main(String args[]) {
    new rolllabel();
    } /**
     * 带有滚动效果的Label标签,可继续拓展很多特效,例如颜色变换、速度变换等
     */
    private class MoveLabel extends JLabel implements Runnable { private static final long serialVersionUID = 1891684760189602720L; private String text = null; private Thread thread = null; private int x = 0; private int w = 0, h = 0; public MoveLabel(String text) {
    super(text);
    this.text = text;
    thread = new Thread(this);
    thread.start();
    } public String getText() {
    return text;
    } public void setText(String text) {
    super.setText(text);
    this.text = text;
    } protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(this.getBackground());
    g.fillRect(0, 0, w = this.getWidth(), h = this.getHeight());
    g.setColor(this.getForeground());
    g.setFont(this.getFont());
    g.drawString(text, x, h - 2);
    } public void run() {
    while (true) {
    x -= 2;
    if (x < -w) {
    x = w;
    }
    this.repaint();
    try {
    Thread.sleep(50);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }}
      

  2.   

    这个我看过,是转帖吗。不过谢谢你!
    private  MoveLabel  label  =  null;  我定义时报错。