有什么办法 可以把一段 字符串 按字符一个一个先后循序打印(有间隔时间)到屏幕上并且判断是否到达屏幕边界 如果到达则 字符接着从第一个位置开始打印。。似乎有点难度 以前看类似代码 但不是我想要的这种效果 平台是J2ME J2SE的一些类可能的需要自己写。

解决方案 »

  1.   

    平台是J2ME 手机PDA一般没那么多功能吧。。 首先是把字符串强制类型转化为字符保存在一个数组当中 然后划定一块矩形区域 判断到达边界 我看过的代码是这样做的 但不是很完美
      

  2.   

    写了一个命令行下运行的,供参考:public class PrintString extends Thread {
    private String str;
    private int screenWidth;
    private String backspaces, spaces; public PrintString(String s, int sw) {
    str = s;
    screenWidth = sw;

    char[] c = new char[screenWidth]; java.util.Arrays.fill(c, '\b');
    backspaces = new String(c);
    java.util.Arrays.fill(c, ' ');
    spaces = new String(c);
    } public void run() {
    for (int i = 0, j = 0; i < str.length(); j = (++i) % screenWidth) {
    if (i > 0 && j == 0) {
    System.out.print(backspaces);
    System.out.print(spaces);
    System.out.print(backspaces);
    }
    System.out.print(str.charAt(i));
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    System.out.println("thread interrupted.");
    }
    }
    } public static void main(String[] args) {
    new PrintString("Hello, World! Hello, World!", 10).start();
    }
    }
      

  3.   

    验证了一下代码 谢谢!!效果还不错
    不过我用的J2ME的平台
    java.util.Arrays 这套类库没有啊
      

  4.   

    非常感谢Dan1980 看了你的代码受到启发 自己写了一段代码 
    public class StringCanvas extends Canvas 
    {
        char[] a;
    String s;
    public StringCanvas() 
    {

    new test("12345678",7).start();
    } protected void paint(Graphics g) 
    {
    g.setColor(0);
    for(int i=0;i<a.length;i++)
    {
    g.drawChar(a[i],0+i*Font.getDefaultFont().charWidth(a[0]),100,20);
    }
    }

    public class test extends Thread
    { public test(String src,int screenwidth) 
    {
    s=src;
    a=new char[screenwidth];
    }

    public void run() 
    {
    while(true)
    {
    try {for(int i=0;i<a.length;i++)
    {
    a[i]=s.charAt(i);
    Thread.sleep(2000);
        repaint();
    }

    } catch (Exception e) {}
    }
    } }}
      

  5.   

    恶补了 2小时String 终于把问题搞定了谢谢个位的帮忙 
    public class StringCanvas extends Canvas implements Runnable
    {
        char[] a;
        
        char b;
        
        int curCharIndex;

    final static String s="就独立涡轮机地垃圾卡哦离开机地勒克司机打击哦案例酱豆腐33333333334444444444";

    int curX;

    Font font=Font.getDefaultFont();

    int count;

    public StringCanvas() 
    {

    a=new char[s.length()];

    new Thread(this).start();


    } protected void paint(Graphics g) 
    {

    g.setColor(0);
    g.fillRect(0,0,180,177);
    g.setColor(255,255,255);
    for(int i=0;i<a.length;i++)
    {
    g.drawChar(a[i],curX+i*font.charWidth(a[0]),100,20);

    }
    }
      
    public void run() {
    while(curCharIndex<s.length())
    {
    try {
    for(int i=0;i<s.length();i++)
    {



    s.getChars(curCharIndex,curCharIndex+1,a,count);
    curCharIndex++;
    count++;

    //System.out.println(font.charsWidth(a,0,count));
    if(font.charsWidth(a,0,count)>90)
    {
    count=0;
    a=null;
    a=new char[s.length()-curCharIndex];
    }



    Thread.sleep(500);
    repaint();
    }
    } catch (Exception e) {}
    break;
    }
    }
    }