我有:
JTextPane jtextPane = new JTextPane();
jtextPane.setEditorKit(new HTMLEditorKit());
...
然后,稍后我尝试添加一个无序列表按钮到工具栏,这样操作是:
Action insertBulletAction =
HTMLEditorKit.InsertHTMLTextAction ("Bullets", "<ul><li> </li></ul>",
HTML.Tag.P, HTML.Tag.UL);
JButton insertBulletJButton = new JButton(insertBulletAction);
如果我对生成的html进行转储,这就包含了正确的代码。然而,它将被渲染得非常糟糕,如以下所示,甚至不接近于合理:
jtextPane.setText(jtextPane.getText());
jtextPane.repaint();
PS2:这个链接也很方便,但它也没有显示出一个解决方案。
更新:这里是所要求的完整代码,但没有太多其他...
public static void main(String[] args)
{
JFrame jframe = new JFrame();
jframe.setSize(800, 600);
jframe.setVisible(true);
JTextPane jtextPane = new JTextPane();
jtextPane.setEditorKit(new HTMLEditorKit());
Action insertBulletAction = new HTMLEditorKit.InsertHTMLTextAction ("Bullets",
"<ul><li> </li></ul>", HTML.Tag.P, HTML.Tag.UL);
JButton insertBulletJButton = new JButton(insertBulletAction);
insertBulletJButton.setRequestFocusEnabled(false);
jframe.setLayout(new BorderLayout());
jframe.add(new JScrollPane(jtextPane));
jframe.add(insertBulletJButton, BorderLayout.SOUTH);
}
答案其实相当复杂。基本上,InserthTmlAction
本身还不够好。您需要大量的工作和逻辑来完成一个工作列表操作。这需要很大的逻辑!所以您必须重写Action类。基本上,InserthTmlAction
的参数将根据您在html代码中的位置而改变。
话虽如此,我研究了几个开源解决方案,以便更好地理解所有涉及的内容。很长一段时间之后(以及之前花了很多时间),我终于能够很好地解决我所需要的问题。但它相当复杂。太复杂了,不能在这里写,它需要一本书的一章来解释概念。即使这样,我仍然对一些细节不清楚(我还在继续努力)。
我现在可以理解为什么人们为了这个卖组件了!
我发现大多数开源解决方案并不能很好地处理列表。它们一般都能正常工作,但大多数都有明显的缺陷。或者他们只是不真正处理任何事情,除了最基本的情况的列表。
这里是我查看的系统列表,以了解它们是如何工作的,从而更好地理解一切。不幸的是,我发现文档缺乏或者很难理解,所以看看这些项目对我的帮助比其他任何事情都大。
最有帮助的
适度有用(较复杂、杂乱、相关性较小等)
我有一个有很多面板的项目。我有一个方法可以在卡片布局面板中切换卡片(jpanel)(见下文)。当我从IDE(Netbeans)运行它时,以及当我从命令提示符()运行jar时,这一切都很正常。但是,当我双击Jar时,卡片会发生变化,但不会产生不希望的结果(当我将鼠标放在出现的组件上时)。如果我再次通过单击按钮调用该方法,它将应用。我需要帮助,请立即:)谢谢!
我创建了一个程序,只需在屏幕上移动一个球。我以前把它都放在一节课上,但我觉得它看起来太乱了,所以我把它分成了三个不同的课:主课。。。初始化一切,游戏。。。它描绘一切,是一个JPanel,AL是一个KeyListener(这也是问题所在)。问题是,我无法让程序从我的AL类重新绘制,无论我试图传递什么。有人能帮忙吗?以下是我的三门课: - -
我有一个Jfreechart,它正在绘制一些模拟实时数据。当我将域轴设置为自动时,可以看到数据每秒更新一次。然而,我希望在更大范围内(比如说一整天)绘制数据。当我更改范围时,除非放大,否则无法看到绘图。 如何使其连续(显示序列中的每个观测点),以及如何在手动设置范围时使其可见
我只是启动libgdx,这看起来很简单,但我不明白。screen对象中的render方法将调用WorldRenderer中的render方法: //屏幕呈现方法
问题内容: 我已经建立了俄罗斯方块游戏。现在,我已经使用JPanel来显示内容和块(使用paintComponents()方法)。 问题是,当我尝试从另一个JFrame调用tetris程序时,它根本无法绘制。 我的俄罗斯方块主菜单的代码是: 当调用MatrixBoard的构造函数时,俄罗斯方块游戏会在新窗口中开始。但是,这些块在屏幕上不可见。MatrixBoard的代码是: 请帮忙。我怀疑问题出在
问题内容: 我正在使用 JSF 2.1.8 实现Web应用程序,而 ui:include 标记存在问题。我有这个代码 该 navigationManagerSystem bean是JSF会话管理,在这一段代码首先呈现的,它应该是显示包括路径内容。如果我以这样的常量执行此操作,则包括这些工作,但是如果我将其放入变量中则不行,即使我已经看到变量在屏幕打印之前就保持了该值。我不知道它是否可以与包含/sy