Многострочная справка Java JTextArea

одна проблема у меня есть 2 JTextAreas, и мне нужно добавить к ним список элементов. Проблема я бегу в это строка автоматически не перейдет на следующую строку при достижении конца JTextArea. Чтобы решить эту проблему, я попытался это: (извините, если мой код немного коряво.)

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

}

любая помощь в том, что я мог бы сделать по-другому или изменить, была бы очень признательна

2 ответов


JTextArea и setLineWrap(...) и setWrapStyleWord(...) методы. Возможно, все, что вам нужно сделать, это позвонить на свой JTextArea ' s установка обоих в true.

один бит критики: ваш код очень трудно интерпретировать, поскольку вы не указываете, какие переменные являются jtextareas (которые, я предполагаю, "включают" и "исключают"), и никаких комментариев относительно того, что делает что. Пожалуйста, напишите свои вопросы здесь с идеей, что мы ничего не знаем о вашем коде и не можем читать мысли. Чем яснее ваш вопрос, обычно тем легче ответить. Спасибо.


возможно, лучшим решением является использование JList. См.Как использовать списки.

код, который вы выложили не полный. Если вы все еще хотите использовать решение текстовой области, опубликуйте свой SSCCE, который демонстрирует проблему.