こんばんは。


誰しも一度はウィンドウにメッセージを表示しようとして、多重構造や入力処理の場合分けに手間取ったことがあるのではないでしょうか。



いや、無いですかね普通…
まぁ、とりあえず溜め込んでおいた文章を表示用に整形する関数を作ってみましょう。



String[] waiting_lines; //溜め込んだ文章
  String[] display_lines;//表示用の配列
  int DISPLAY_LINE = 3;
  int DISPLAY_CHARS = 10;
  public void adjustDisplayLines(){

    if(display_lines == null)
     display_lines = new String[DISPLAY_LINE];

    //waiting_lines をdisplay_linesに安全にコピーする
    //Stringは参照型なのに気をつける。

    int d_index = 0; //display_linesの添え字
    int w_index = 0; //waiting_linesの添え字
    while(d_index < DISPLAY_LINE){
      if(waiting_lines.length <= w_index){
        display_lines[d_index] = "";
        d_index++;
      }
      else if(waiting_lines[w_index].length() > DISPLAY_CHARS){
        //表示可能文字数を越えているとき
        display_lines[d_index] = waiting_lines[w_index].substring(0, DISPLAY_CHARS);
        waiting_lines[w_index] = waiting_lines[w_index].substring(DISPLAY_CHARS, waiting_lines[w_index].length());
        d_index++;
      }
      else{
        display_lines[d_index] = waiting_lines[w_index].substring(0, waiting_lines[w_index].length());
        d_index++;
        w_index++;
      }
    }
    if(waiting_lines.length <= w_index){
      waiting_lines = null;
    }
    else{
      String[] temp = new String[waiting_lines.length -w_index];
      for(int i = 0; i < waiting_lines.length -w_index;i++){
        temp[i] = waiting_lines[w_index+i];
      }
      waiting_lines = temp;
    }
  }


とこんな感じでしょうか。あとは読み込み時に


waiting_lines = split(message,"<br>");


adjustDisplayLines();


とでもしておいて、ボタン入力時にはwaiting_linesがnullならウィンドウ表示フラグを解除し、nullでないならadjustDisplayLines();を実行すれば大丈夫です。




今日も一日お疲れ様でした。詳しい説明は明日にでも…