使用线程一个一个地打印字符串字符

Print String character one by one using threads

我想在动画横幅上一个一个地打印字符,但我得不到想要的结果。

我用我的代码得到了结果,但不是我要找的结果。我也得到了字符的横幅和结果。

但是这些字符彼此重叠。
请检查下面的代码

import java.awt.*;
import java.io.*;

//Banner class
class Banner extends Frame implements Runnable 
{
    boolean stop=false;
    String str="Sreedhar Practice seassion";
    //constructor
    public Banner()
    {
        setLayout(null);
        setBackground(Color.cyan);
        setForeground(Color.blue);
    }//end of constructor

    //image paint settings methosd
    public void paint(Graphics g)
    {
        Font f=new Font("Courier",Font.BOLD,40);
        g.setFont(f);
for (int i=0;i<=str.length() ;i++ )
        {
            char ch=str.charAt(i);
            String c=String.valueOf(ch);
            g.drawString("\t"+c,10,100);
            try
            {
                Thread.sleep(100);
            }
            catch (InterruptedException ie)
            {
            }
            //char ch=str.carAt(0);
            //str=str.substring(1,str.length());
            //str=str+ch;
            if (stop)
            {
                return;
            }
        }

    }//image paint settings methosd end

    //start of run method
    public void run()
    {
            if (stop)
            {
                return;
            }
        }
    }//end of run method

    //main method starting
    public static void main(String[] args)throws IOException 
    {
        Banner b=new Banner();
        b.setSize(400,400);
        b.setTitle("Sreedhar Banner");
        b.setVisible(true);
        Thread t=new Thread(b);
        t.start();
        System.in.read();
        b.stop=true;
    }//end of main method
}//end of class Banner

这是我的代码,但没有得到我想要的结果。

您调用 g.drawString("\t"+c,10,100); 时坐标似乎保持不变。看起来它应该根据字母编号以某种方式沿 x 轴移动。试试这个:

int xLetterDifference = 6;
g.drawString("\t"+c, 10 + xLetterDifference  * i ,100);

并更改 xLetterDifference 的值以调整字母之间的距离

这里有一些错误 第一:

}//end of run method

一个大括号是多余的

秒:

for (int i=0;i<=str.length() ;i++ )

应该是:

for (int i=0; i < str.length(); i++)

第三名:

g.drawString("\t" + c, 10 + PRINT_FACTOR * i, 100);

其中PRINT_FACTOR应该被过期计算或选择