Tag: htmleditorkit

使用Unicode(Java)访问/更改JEditorPane的html加载元素+ HTMLEditorKit问题

这将是一个很长的问题,所以忍受我:) 我的应用程序 我正在开发一个Java(带有JFrame GUI)桌面应用程序,它执行以下操作: 扫描(.txt)文件。 从这些文件中解析一些数字,对它们执行一些计算,最后将结果存储在String变量中。 以特殊(表格)格式输出这些数字。 (注意:格式包括一些Unicode(阿拉伯语)字符。) 问题 前两部分进展顺利。 但是,当我来到第3部分(格式化输出)时,我不知道如何显示这种特殊格式,所以, 在Java中显示特殊格式化输出(表)的最佳方法是什么? 注意: Formatter 不会提供帮助,因为它没有对表的适当支持。 解决方案一: 我做了我的研究,发现我可以使用JEditorPane,因为它可以显示特殊格式,如“html”。 所以我决定用所需的(表格)格式创建一个“html”页面,然后在[JEditorPane] [4]上显示这个页面。 我这样做了,它顺利进行,直到我想将一些html元素的值更改为那些(.txt)文件中的解析数字。 如何访问html元素(例如 )并更改其值? 请注意,使用setPage(url)在JEditorPane中加载(.html setPage(url) 。 Unicode字符显示正常,但我无法更改某些元素值(例如,我想将 000,000,000 的值更改为 MainController.getCurrentTotalPayment() 解决方案二: 我找到了一个解决方法,涉及使用HTMLDocument和HTMLEditorKit,这样我就可以从头开始使用HTMLEditorKit创建(.html)并使用kit.insertHTML在JEditorPane上显示它。 我已经使用上面的方法成功添加了内容,并且我还能够从(.txt)文件中添加解析后的数字,因为我将它们存储在my(MainController)类中。 不幸的是,Unicode阿拉伯字符未正确显示。 如何正确显示这些Unicode字符? 所以第一个解决方案缺乏对html元素的访问权限,第二个解决方案缺乏Unicode支持! 我的同事建议我在html文档中使用JSP代码,该代码可以访问我的MainController.java类。 因此,将页面加载到JEditorPane中已经更改了html元素。 没有JSP的帮助,有没有办法做到这一点? 其他人推荐使用JTidy,但是在Java的JDK中没有办法吗? 我对所有可能的解决方案持开放态度。 请帮忙。 我的代码: 省略了一些代码内容,因为它们不相关 MainController.java class MainController { private static String currentTotalPayment; public static void main(String[] […]

JTextPane – 具有HTMLEditorKit列表的子弹无法正确呈现,除非我执行setText(getText())并重新绘制

我有: JTextPane jtextPane = new JTextPane(); jtextPane.setEditorKit(new HTMLEditorKit()); … 然后我尝试将无序列表按钮添加到工具栏,以便操作为: Action insertBulletAction = HTMLEditorKit.InsertHTMLTextAction (“Bullets”, ” “, HTML.Tag.P, HTML.Tag.UL); JButton insertBulletJButton = new JButton(insertBulletAction); 如果我转储生成的html,这包括正确的代码。 然而,它将被渲染得非常糟糕,因为如下所示甚至没有接近合理: 但是,如果我这样做: jtextPane.setText(jtextPane.getText()); jtextPane.repaint(); 一切都很好。 但如果我不做两条线,那么两者都不会单独工作。 我还可以通过在使jtextPane可见之前设置文本来使其工作。 这真的很奇怪,我不明白为什么我必须做一个setText(getText())后跟一个repaint() 。 PS:这与这个问题非常相似: 如何在JTextPane中实现项目符号? 它的工作原理除了它没有正确渲染。 我不知道它是否与HTMLEditorKit和RTFEditorKit有关,但我导致渲染失败。 下面的html源代码是完美的…… PS2: 此链接也非常方便,但它也没有显示解决方案。 更新:这是所要求的完整代码,但没有其他… public static void main(String[] args) { JFrame jframe = new JFrame(); jframe.setSize(800, 600); […]