21833


java appletで文字列を1文字ずつ出力するテストをしています。

[code]

    import java.applet.Applet;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.font.*;
    
    public class Sample1 extends Applet{
        public void paint(Graphics g)
        {
            g.drawString("Welcome to java applet", 10, 10);
            g.drawLine(10, 10, 100, 100);
            g.setColor(Color.BLUE);
            g.fillOval(200, 300, 100, 100);
            g.setColor(Color.RED);
            g.fillOval(400, 300, 100, 100);
    
    
            g.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
            g.drawString("Hello there", 50, 50);
    
            String abc = "文字列を1文字ずつ出力するテストです。";
    
            char data[] = abc.toCharArray();
            int arr_num = data.length;
    
            for(int i = 0; i<= arr_num-1; i++){
                try{
                    Thread.sleep(100);
                }
                catch(InterruptedException e){
    
                }
                g.drawString(Character.toString(data[i]), 300, 300);
            }
        }
    
    }
    
[/code]

上記のコードを実行したら特にエラーがないんですが、変な結果が出てきました。  
[![画像の説明をここに入力](https://i.stack.imgur.com/EF4xn.png)](https://i.stack.imgur.com/EF4xn.png)

どこが間違いなのかまだ分かりませんが、皆さんのご指摘をお願い致します。


CC BY-SA 3.0
2016-02-08T04:54:26.697
21832
2016-02-09T03:43:20.130
2016-02-09T03:43:20.130
76
14322
question
java
java appletで文字列を1文字ずつ出力する


「文字列を1文字ずつ出力するテストです。」の出力が同じ座標に出力されているために文字が重なって表示されています。縦に並べるのか横に並べるのか期待値が記載されていないのでどうしたいのかわかりませんが、左から右に並べて出力するのであれば、下記のように一文字ずつX座標をずらしてみたらどうでしょうか。

[code]

    for(int i = 0; i<= arr_num-1; i++){
        try{
            Thread.sleep(100);
        }
        catch(InterruptedException e){
    
        }
        g.drawString(Character.toString(data[i]), 300 + (i * 24), 300);
    }
    
[/code]

フォントサイズに24が指定されているようなので、この例では一文字出力するたびにX座標を24ずつ右にずらしています。


CC BY-SA 3.0
2016-02-08T05:18:15.997
21833
2016-02-08T05:18:15.997
10724
21832
answer