2011-07-15 26 views
6

un problema que tengo es que tengo 2 JTextAreas y necesito agregarles una lista de elementos. El problema con el que me estoy encontrando es que la cadena no se mueve automáticamente a la siguiente línea cuando llega al final de JTextArea. Así que para resolver este problema he intentado esto: (lo siento si mi código es un poco descuidado.)Java JTextArea ayuda de varias líneas

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); 

} 

cualquier ayuda en lo que podría hacer diferente o cambio sería muy apreciada

Respuesta

7

JTextArea tiene setLineWrap(...) y los métodos setWrapStyleWord(...). Quizás todo lo que necesita hacer es llamarlos a la configuración de JTextArea tanto como verdadera.

Un poco de crítica: su código es muy difícil de interpretar ya que no da ninguna indicación de qué variables son JTextAreas (que supongo que son "Incluir" y "Excluir"), y no hay comentarios sobre qué está haciendo qué . Por favor, escriba sus preguntas aquí con la idea de que no sabemos nada sobre su código y no podemos leer las mentes. Cuanto más clara sea su pregunta, por lo general, es más fácil responderla. Gracias.

+0

¡Eso ayudó y trabajó muchas gracias! = D –

+2

@Michael: si ayudó, luego vote la respuesta, si resuelve el problema, "acepte" la respuesta. No edite el título de su pregunta para indicarlo como "cerrado", ya que tiene un significado completamente diferente en este foro. Sugiere que los miembros del foro han cerrado la pregunta por inadecuada o inapropiada. –

3

Tal vez una mejor solución es usa JList. Ver How to Use Lists.

El código que ha publicado no está completo. Si aún desea utilizar una solución de área de texto, publique su SSCCE que demuestra el problema.

+0

JList omitió muchos métodos en comparación con JTable con solo una tablaColumna y sin TableHeader +1 – mKorbel

+1

@Michael: la solución de camickr puede ser la mejor (1+). Harías bien en echarle un vistazo. –