Java JTextArea 多行帮助

标签 java swing newline substring 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);

}

对于我可以做的不同或改变的任何帮助将不胜感激

最佳答案

JTextAreasetLineWrap(...)setWrapStyleWord(...) 方法。也许您需要做的就是在您的 JTextArea 设置中将它们都设置为 true。

一点批评:您的代码很难解释,因为您没有指明哪些变量是 JTextAreas(我猜是“Include”和“Exclude”),也没有说明什么在做什么。请在这里写下您的问题,因为我们对您的代码一无所知,也无法读懂您的想法。你的问题越清楚,通常就越容易回答。谢谢。

关于Java JTextArea 多行帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710130/

相关文章:

java - 如何创建一个 java 应用程序来读取 twitter 提要?

java - 隐藏 Wicket WebMarkupContainer 将不起作用

java - 设置 jtextarea 的字体名称、样式和大小

java - main(String[]) 上的 Swing Timer 在指定时间后退出程序

java - JSplitPanel 内 Jpanel 的大小

java - 扫描仪跳过数字 Java

Python 转储 "\n"而不是 json 文件中的换行符

perl - 用 SED 或 PERL 单行匹配并替换多个换行符

android - 换行符的歧义行为

java - 从其他类(扩展广播接收器)调用 MainActivity 方法