前提・実現したいこと
今javaでノベルゲームを作っているのですが、文字を左から右に流したいのですが、やり方が全く分かりません。どのようにすればよいのでしょうか、教えてください。
ちなみにjavaを始めてからまだ1か月くらいしかたってないので分からないことが沢山あるのですが、どうぞよろしくお願い致します。
試したこと
二日くらいかけて、文字を流す方法を調べていろいろサンプルコードは出てきたのですが、どの部分を書けばよいのか分からず何をしていいか分からなかったので質問させていただきました。
補足情報(FW/ツールのバージョンなど)
eclipseのバージョン4.5を使用しています。
javax.swingで作っています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
このようなことかと思います.
java
1import javax.swing.JFrame; 2import javax.swing.JTextArea; 3import javax.swing.SwingUtilities; 4import javax.swing.WindowConstants; 5 6public class NovelText extends JFrame { 7 public static void main(String[] args) { 8 JFrame frame = new NovelText(); 9 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 10 frame.setSize(500, 400); 11 frame.setVisible(true); 12 } 13 NovelText() { 14 super(); 15 16 JTextArea textArea = new JTextArea(); 17 textArea.setEditable(false); 18 getContentPane().add(textArea); 19 20 setTalking(textArea, "じゅげむ じゅげむ ごこうのすりきれ\n" + 21 "かいじゃりすいぎょの すいぎょうまつ\n" + 22 "うんらいまつ ふうらいまつ\n" + 23 "くうねるところに すむところ\n" + 24 "やぶらこうじの ぶらこうじ\n" + 25 "パイポパイポ\n" + 26 "パイポのシューリンガン\n" + 27 "シューリンガンのグーリンダイ\n" + 28 "グーリンダイのポンポコピーのポンポコナーの\n" + 29 "ちょうきゅうめいのちょうすけ"); 30 } 31 void setTalking(final JTextArea textArea, final String text) { 32 Thread thread = new Thread(new Runnable() { 33 @Override 34 public void run() { 35 try { 36 int index = 0; 37 while(true) { 38 textArea.append(text.substring(index, index+1)); 39 if(++index >= text.length()) break; 40 Thread.sleep(300); //[ms] 41 } 42 } catch (InterruptedException ignore) { 43 } 44 } 45 }); 46 thread.start(); 47 } 48}
投稿2019/02/10 11:23
総合スコア12545
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/10 17:12 編集
2019/02/10 18:48
0
こんな感じでしょうか。
下記はコンソールへ標準出力するプログラムです。
- 文字列を1文字ずつ配列に分割し、for文で1文字ずつ表示しています。
- 表示するときに指定した時間だけ処理を停止しています。
dispSpeedMsec
の値を変えることで表示スピードを変えることができます。
Java
1public class Main { 2 3 public static void main( String[] args ) throws InterruptedException { 4 5 // 表示したい文章 6 String text = "吾輩は猫である。名前はまだないよ〜〜〜。"; 7 8 // 文章の表示スピード(ミリ秒) 9 int dispSpeedMsec = 100; 10 11 // 文章表示実行 12 showText( text, dispSpeedMsec ); 13 14 } 15 16 private static void showText( String text, int dispSpeedMsec ) throws InterruptedException { 17 String[] textArray = text.split( "" ); 18 19 for( int i = 0; i < textArray.length; i++ ){ 20 // 文字を表示 21 System.out.print( textArray[ i ] ); 22 23 // dispSpeedMsecの時間だけ処理を停止 24 Thread.sleep( dispSpeedMsec ); 25 } 26 27 } 28 29} 30
投稿2019/02/09 13:19
編集2019/02/09 13:22総合スコア12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/02/10 11:50
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。