2012-02-08 12 views
0

私はファイルから取ったテキストを表示する必要があるJpanelを持っています。 しかし、私は単語(1ワード/秒)でテキストの単語を表示する必要があります。どうすればいいですか? 私はpaintComponentメソッドをオーバーライドしようとしたが、それは徐々にテキストを表示することはできません。..JPanelは徐々にテキストを表示します

答えて

1

あなたはタイマー(スイングパッケージのもの)を探しています。あなたは準備ができて単語分割の部分を持っていると仮定すると、以下の擬似コードスニペットはJTextAreaのに連続的にそれらを追加する方法の例です:

ActionListener l = new ActionListener() { 
    @Override 
    public void actionPerformed(...) { 
     textArea.append(words.remove(0)); 
    } 
}; 
Timer timer = new Timer(1000, l); 
timer.start();  

あなたが本当にカスタムパネルに手動で文字列を描きたい場合は、それはappendメソッドを持ってみましょう、あなたのactionListener、私はそれを試してみるよ

class MyPanel .... 
    String text; 
    public void append(String word) { 
     text += word; 
     repaint(); 
    } 
    @Override 
    protected void paintComponent(...) { 
     super.paintComponent(..); 
      // draw the string 
    } 
} 
1

は多分、より良い方法ですが、この場合には、のJPanelの延長はもちろん、独自のJPanelを行い、ます。public voidペイント(グラフィックスを上書きg)なので、テキスト全体、文字列myWords、その他の文字列currentWordsと呼ぶことができます。

これで最初に配列を塗り潰す必要がありますのようなものです。これはコンストラクタ上にあるか、またはファイルを読み込むときに

myWords = entireText.split(" "); 

、その後、paintメソッドでは、あなたのタイマー内のときに、X、YのCOORDSがあり、あなたが

currentWords+= myWords[counter+1]; 

を入れ、最後にあなたが最後の0,0

g.drawString(currentWords,0,0); 

を入れて1秒です多分あなたはこれを制御してテキストを新しい行に入れる必要があります

+0

のようなもので、あなたのhekp –

+0

ためのおかげでdownvoteを削除することを呼び出す - 全体的な説明は結構です、ちょうど間違った塗装方法をsuggeting 。それは_not_ paint(...)です。paintComponent(..)です。 – kleopatra

関連する問題