2011-07-15 18 views
6

私は2つのJTextAreasを持っているので、それらのアイテムのリストを追加する必要があります。 私が実行している問題は、文字列がJTextAreaの最後に達したときに自動的に次の行に移動しないことです。だから私はこれを試してみました。この問題を解決するには、次の(。私のコードはちょっとずさんであれば申し訳ありません)Java JTextArea multilineヘルプ

public void setIncludeAndExclude(ArrayList<JComboBox> boxes){ 
    String in = "",ex = ""; 
    String[] inSplit, exSplit; 


    boolean[] include = new boolean[boxes.get(0).getModel().getSize()-1]; 
    for(int i = 0; i < boxes.size(); i ++){ 
     if(boxes.get(i).getSelectedIndex() != 0){ 
      include[boxes.get(i).getSelectedIndex() -1] = true; 
     } 
    } 

    for(int i = 0; i < include.length; i ++){ 
     if(include[i]){ 
      //numToItem is a method that turns an int into a string e.g. 1 = "Acesss Doors" 
      in += (numToItem(i+1)+ ", "); 
     }else{ 
      ex += (numToItem(i+1)+ ", "); 
     } 
    } 

    //take off the last comma 
    in = in.substring(0,in.lastIndexOf(",")); 
    ex = ex.substring(0,ex.lastIndexOf(",")); 

    //get how many lines there should be   
    inSplit = new String[(in.length()/100) +1]; 
    exSplit = new String[(ex.length()/100) +1]; 

    String temp;   
    int istart = 0, iend = Math.min(100, in.length()), estart = 0, eend = Math.min(100, ex.length()); 

    for(int i = 0; i < inSplit.length; i ++){ 
     try{ 
      temp = in.substring(istart, iend); 
      int Iindex = temp.lastIndexOf(","); 
      temp = ex.substring(estart, eend); 
      int Eindex = temp.lastIndexOf(","); 
      inSplit[i] = in.substring(istart, Iindex); 
      exSplit[i] = ex.substring(estart, Eindex); 
      istart = Iindex; iend = Math.min(iend + 100, in.length()); 
      estart = Eindex; eend = Math.min(eend + 100, ex.length()); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    //reset in and ex to ""  
    in = ""; ex = ""; 

    //set in and ex to the new string with newline characters 
    for(int i = 0; i < inSplit.length; i ++){ 
     in += inSplit[i] + "\n"; 
     ex += exSplit[i] + "\n"; 
    } 

    //set the text of the JTextAreas 
    Include.setText(in); 
    Exclude.setText(ex); 

} 

私は異なるまたは変更を行うことができるもの上の任意のヘルプは非常に

答えて

7

JTextAreaは、setLineWrap(...)およびsetWrapStyleWord(...)の方法を有する。おそらくあなたがする必要があるのは、JTextAreaの両方をtrueに設定してこれらを呼び出すことだけです。

1ビットの批判:JTextAreas(「Include」と「Exclude」と推測しています)と何が何をしているのかについてのコメントは表示されません。私たちがあなたのコードについて何も知らないし、心を読むことができないというアイディアをあなたの質問に書いてください。あなたの質問を明確にするほど、通常は簡単に答えることができます。ありがとう。

+0

そんなに助けてくれてありがとう! = D –

+2

@マイケル:もしそれが助けられたら、答えをアップアップし、問題を解決すれば答えを "受け入れる"。このフォーラムで全く異なる意味を持つように、質問タイトルを編集して「閉じた」としないでください。それは、フォーラムのメンバーが不十分であるか不適切であるとして質問を締め切ったことを示唆している。 –

3

をいただければ幸いですたぶん、より良い解決策はにありますJListを使用します。 How to Use Listsを参照してください。

投稿したコードが完全ではありません。それでもテキスト領域のソリューションを使用する場合は、問題を示すSSCCEを投稿してください。

+0

JListは、TableColumnを1つしか持たず、TableHeaderを持たないJTableと比較する方法がありませんでした+1 – mKorbel

+1

@Michael:camickrの解決策が良いかもしれません(1+)。あなたはそれをチェックするためにうまくいくでしょう。 –