当前位置: 首页 > 知识库问答 >
问题:

从HTML文件读取文本时,JTextPane没有添加新行

西门智
2023-03-14

我试图根据元素的id从超文本标记语言文件中读取文本,并将其显示在JTextPane中。但是,当我读取文本并显示它时,它不会进入新行。以下是正在读取的超文本语言标记的示例:

<!-- LOOK BED command text -->
<p id="look-bed">
    The bed looks hard and uncomfortable.<br>
</p>


<!-- LOOK FOOD command text -->
<p id="look-food">
    The food doesn't look very appetizing.<br>
</p>

我从HTML页面读取的方法是:

   public static String ReadFromHTMLFile(String tagId) {
        Document htmlFile;
        File file = new File("GameText.html");
        try {
            htmlFile = Jsoup.parse(file, "UTF-8");
            Element element = htmlFile.getElementById(tagId);
            return String.valueOf(element);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return "Unable to access " + tagId + " element";
    }

我用来更新JTextPane中文本的方法是:

   public static void SetGameText(String location, String text, boolean appendText) {
        if(appendText) {
            try {
                HTMLDocument doc = (HTMLDocument) gameText.getStyledDocument();
                doc.insertAfterEnd(doc.getCharacterElement(doc.getLength()), text);
            }
            catch (IOException | BadLocationException e) {
                e.printStackTrace();
            }
        }
        else {
            gameText.setText("");
            gameText.setText(location + text);
        }
    }

用户应该在文本框中输入命令,然后单击提交按钮,并根据输入的命令获取反馈。问题是,输入的每个命令都出现在同一行,而不是新行。

如果appendText为false,则运行SetGameText方法的部分会按预期的方式运行,在需要的地方创建换行符,但如果appendText为true,则运行的部分不会创建换行符,即使我使用

共有2个答案

端木令
2023-03-14

要合理显示HTML文档,请使用JEditorPane。把它切换到text/htmlcontent,你就可以把你的东西呈现出来了。

还要检查如何使div到新行,以及如何使div在每一行上。

如果有疑问,只需添加

赏成益
2023-03-14

我想出了解决问题的办法。而不是把文本放在

标签,我把它放在一个标签,并设置显示块,它的工作就像我想要的。

例如,我改变了:

<p id="look-bed">
    The bed looks hard and uncomfortable.
</p>

至:

<div id="look-bed">
    The bed looks hard and uncomfortable.
</div>
 类似资料:
  • 我是java的初学者,我正在尝试做一个小的java程序,读取一个excel文件,并在文件末尾添加一个新行来更新文件。然后再次读取并使用新行ecc,ecc进行更新。 这是我读取的文件(boh.xls): 点击这里查看图片 当他转到“workbook.write()”时,它会向我抛出这个错误: 有什么建议吗?谢谢你们!

  • 问题内容: 在我的应用程序中,我使用来显示一些日志信息。因为我想突出显示文本中的某些特定行(例如错误消息),所以将设置为“ ”。这样,我可以设置文本格式。 现在,我创建一个JButton,将其内容复制到剪贴板中。这部分很简单,但是我的问题是,当我调用时,我得到了HTML代码,例如: 而不是只获取原始内容: 有没有办法只获取纯文本格式的内容?还是我需要自己将HTML转换为原始文本? 问题答案: 基于

  • 编写了通过Spark读取文本文件的代码...在Local中运行良好...但在HDInsight中运行时产生错误->从Blob读取文本文件 org.apache.spark.sparkException:作业由于阶段失败而中止:阶段0.0中的任务0失败了4次,最近的失败:阶段0.0中丢失的任务0.3(TID 5,wn1-hchdin.bpqkkmavxs0ehkfnaruw4ed03d.dx.int

  • 我试图在flifter中读取文件,但收到一个错误 csv文件已在pubspec的资产部分声明。yaml 并且文件的路径是正确的,下面是我同步读取文件的尝试: --课程开始时: -pubspec.yaml,资产科: --读取文件的方法 --调用上述方法---

  • 我正在编写一个程序,读取文本文件,并显示第一个学生的姓名、年级和全班平均成绩。对于上面给出的文件,结果如下:类中的第一个是Ahmad Hamwi has 16.00,类的平均值是12.25这是我试图读取的W文本文件 这就是我一直犯的错误 我已经试了几个小时了。我知道错误在第37行。这可能与类型有关。我尝试了int和浮动,但一样。