要求用多线程实现两个分开的滚动字幕,觉得可以用graphics实现移动的字幕,但具体实现不会,求教各位大虾~

解决方案 »

  1.   

    建一线程来负责滚动,把graphics传给它,run()写一死循环,大致如下
    while(true){
      g.drawString(str,x,y);
      x=(x+步子)%滚动宽度;  //左右滚动
     或者y=(y+步子)%滚动宽度 //上下滚动
      sleep(适当的时间)
    }
    也可以用时钟来控制。试试吧,这个不难的,有什么问题再说,我今晚有空,尽量帮你解决
      

  2.   

    首先很感谢二楼,但由于学校11点断电,拖到今天才回复,再次说声抱歉~
    以下是我自己写的代码,但无法实现想要的功能,希望各位帮忙指正
    package five;
    import java.awt.*;
    import java.awt.event.*;class myCanvas  extends Canvas implements Runnable
    {

    int x;
    Graphics g;
    myCanvas(Graphics g)
    {
    this.g=g;
    }

    public void run()
    {
    while(true)
    {
    try{
    this.repaint();
    Thread.sleep(60);}
    catch(Exception e)
    {
    e.printStackTrace();
    }

    }
    }
    public void paint(Graphics g)
    {
    g.setColor(Color.WHITE);
    g.drawRect(10, 30, 150, 100);
    //g.setColor(Color.WHITE);
    //g.fillRect(10, 30, 150, 100);
    g.setColor(Color.RED);
    g.drawString("Hello Java", x,100);
    if(x>400)
    x=0;
    x=x+3;

    }
    }
    public class Title
    {
    public static void main(String[] args) 
    {
    Frame f=new Frame("title");
    f.setLocation(100,100);
    f.setBackground(Color.white);
    f.setBounds(100,100,400,400);
    f.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
          }
        });
    f.setVisible(true);
    myCanvas mc=new myCanvas(f.getGraphics());
    new Thread(mc).start();


    }
    }