【问题标题】:Saving jTextPane text not working properly保存 jTextPane 文本无法正常工作
【发布时间】:2016-04-15 23:45:10
【问题描述】:

在您从一行发送命令后,我正在尝试保存我正在构建的“历史记录”,因此每次您按 Enter 时,命令都会使用行分隔符转到 jTextPane...但是当我保存文件它似乎没有得到行分隔符。例如,我的 jTextPane 有类似的东西:

Create database user
use database user
show tables from database

而不是像那样保存工作区,它给了我这个:

从数据库创建数据库 useruse 数据库 usershow 表

我该怎么办?这是我的代码

String ar;
    String TEXTO = jTextPane1.getText() + System.lineSeparator();
    FileFilter ft = new FileNameExtensionFilter("Text Files", ".txt");
    FC.setFileFilter(ft);
    int returnVal = FC.showSaveDialog(this);

    if (returnVal == javax.swing.JFileChooser.APPROVE_OPTION) {

        java.io.File saved_file = FC.getSelectedFile();
        String file_name = saved_file.toString();
        File archivo;
        ar = "" + file_name + ".txt";

        archivo = new File(ar);
        try {
            if (saved_file != null) {
                try (FileWriter GUARDADO = new FileWriter(ar)) {
                    GUARDADO.write(TEXTO);
                }
            }
        } catch (IOException exp) {
            System.out.println(exp);
        }
    }

【问题讨论】:

  • 顺便说一句。 “System.lineSeparator()”是我尝试过的,但它不起作用,因为它在从 TextPane 读取所有内容之后放置该行

标签: netbeans save jtextpane filechooser


【解决方案1】:

你需要使用:

jTextPane1.getDocument().getText(0,jTextPane1.getDocument().getLength());

【讨论】:

  • 这可能是一个解决方案,但是......并没有按照我想要的方式编写所有内容,因为它仍然只用它找到的每个单词创建一行,而不是给出行分隔符
  • 我尝试使用您提供的示例输入,它似乎工作正常。请解释一下,如果我没有得到其他东西。
【解决方案2】:

问题是您需要使用 /n 而不是 System.lineSeparator。 JTextPane 行为不依赖于系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多