我有一个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();
}
}
我像这样构建内容String:
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的内容保存到txt文件并将其重新加载到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/。但我不知道他们来自哪里。
谢谢你的时间!
答案 0 :(得分:3)
这里的问题是您添加了两次“\ n”。在构建内容字符串之后,以及在加载文件的位置。如果删除加载函数中的“\ n”,则应该看到没有附加空行的文本。
答案 1 :(得分:0)
在您的加载功能中,您不应为每条扫描线添加换行符,请尝试以下操作:
while(scan.hasNextLine())
{
strbld.append(scan.nextLine());
}
答案 2 :(得分:0)