2011-11-09 7 views
3

私はJTextAreaに文字を "入力"するクラスを作っています。誰かが入力しているように見えるように各文字間を一時停止します。私が思いつくことができる唯一の方法は、一時停止したループでoutput.append(char)を使うことです。唯一の問題は、JTextAreasにのみStringを追加できることです。JTextAreaにcharを追加します

文字を文字列に変換して文字を追加できるようにする方法はありますか?ここで

は私のコードは、これまでのところです:

import objectdraw.*; 
import java.awt.*; 
import javax.swing.*; 

public class TypeWriter extends ActiveObject 
         implements Drawable { 

    private char [] letter; 
    private JTextArea cp; 

    public TypeWriter(String sentence, JTextArea console) { 

    /* break string into characters and save the console 
    * for later use 
    */ 
    letter = new char[sentence.length()]; 
    cp = console; 

    for(int i=0; i<sentence.length(); i++) { 
     letter[i] = sentence.charAt(i); 
    } 

    start(); 

    } 

    public void run() { 

    // append each letter, pausing between them 
    for(char s : letter) { 
     cp.append(new String(s)); 
     pause(50); 
    } 

    } 

    /* More methods for the 
    * Drawable interface... 
    */ 

} 
+0

あなたは文字列にJavaで*何も*に変換するにはどうすればよいのString(文字[]値)コンストラクタを使用しますか? tで始まりgで終わります;-)これまで提案されていたテクニックはオリジナルのコードと同じ(考えられる)欠陥を共有しています...あなたのUIはファントムタイピストが働いている間ロックされています。 –

+0

ええと.toString()メソッド....うまくいきませんでした。私はエラーがあった、それは言った... charはdereferencedすることはできません – CaldwellYSR

+0

申し訳ありません - あなたはおそらく文字ではなく、文字で試してみました。最初にCharacterに変換する必要があります。コンパイラによって非常に高度に最適化されているこの短縮形のバージョンは、空の文字列(例えば、String Bar = "" + 'x';)に追加するだけです。 –

答えて

2

は、文字を使用しないでください。

String foo = "This is a String"; 
for (int i = 0; i < foo.length(); i++) 
{ 
    String subString = foo.substring(i, i+1); 
    cp.append(subString); 
    pause(50); 
} 
+0

私はあなたの解決策が好きです。 – Grammin

+0

ああ、もっと意味があります。ありがとうございます。 – CaldwellYSR

+0

それは美しく動作します – CaldwellYSR

3

ので

String s = ""; 
s += Character.toString('s'); 
関連する問題