JTextPane дополнительные пустые строки

У меня есть JTextPane Я установил его текст с помощью следующего метода.

public void setConfigPaneText(String content, Style style)
{
    StyledDocument logDoc = configPane.getStyledDocument();

    if(style == null)
    {
        style = configPane.addStyle("Style", null);
        StyleConstants.setForeground(style, Color.white);
        StyleConstants.setBold(style, true);
    }

    try 
    {
        configPane.setText(null);
        logDoc.insertString(logDoc.getLength(), content, style);
    }
    catch (BadLocationException e1)
    {
        e1.printStackTrace();
    }
}

Я строю содержимое строки следующим образом:

            if(f.exists())
            {
                Scanner scan = new Scanner(f);
                while(scan.hasNextLine()) 
                {
                    strbld.append(scan.nextLine()+"\n");
                }                   
                TopologyMain.nodes.get(i).setPtpConfig(strbld.toString()); // output
                scan.close();
            }

Поэтому я правильно отображаю эту строку в JTextPane, проблема в том, что когда я сохраняю содержимое JTextPane в текстовый файл и перезагружаю его в JTextPane, одна новая пустая строка появляется после каждой строки.

Картинка здесь: http://postimg.org/image/76z69oe7x/

Код делает сохранить...

    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileChooser.getSelectedFile().getAbsolutePath())));
    out.print(configPane.getText());
    out.close()

и загрузить:

if(filetmp.exists()) 
{
    Scanner scan;
    try 
    {
        scan = new Scanner(filetmp);

        while(scan.hasNextLine()) 
        {
            strbld.append(scan.nextLine()+"\n");
        }                   

        setConfigPaneText(strbld.toString(), null);

        scan.close();
    } 
    catch (FileNotFoundException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 }

Без / n в этом методе это выглядит так: http://postimg.org/image/kn38ja8ov/

Причиной проблемы может быть то, что у меня есть дополнительный символ "\r" в конце моих строк, как это можно увидеть здесь: http://postimg.org/image/9ny41rz3z/. Но я не знаю, откуда они берутся.

Спасибо за ваше время!

3 ответа

Решение

Решение от Gavi в комментариях:

Причиной проблемы было то, что у меня было несколько CR ("\r") символов, как это можно увидеть здесь. Вы можете проверить выходной текстовый файл с помощью функции "Показать все символы" в notepad++, чтобы выяснить это самостоятельно. Затем проверьте все части кода, относящиеся к JTextPane или к строке, которую вы используете в качестве содержимого, чтобы найти дополнительные CR и удалить их.

Проблема в том, что вы добавляете "\n" дважды. Один раз, когда вы строите содержимое строки, и один раз, где вы загружаете файл. Если вы удалите "\n" в своей функции загрузки, вы должны увидеть текст без дополнительной пустой строки.

В вашей функции загрузки вы не должны добавлять новую строку для каждой отсканированной строки, попробуйте это:

while(scan.hasNextLine()) 
{
  strbld.append(scan.nextLine());
} 
Другие вопросы по тегам