使用线程一个一个地打印字符串字符
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应该被过期计算或选择
我想在动画横幅上一个一个地打印字符,但我得不到想要的结果。
我用我的代码得到了结果,但不是我要找的结果。我也得到了字符的横幅和结果。
但是这些字符彼此重叠。
请检查下面的代码
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应该被过期计算或选择