0

编辑 - 简而言之,我正在寻找一种可靠的方法来向 JEditorPane 添加左边距(如果您愿意,请继续阅读我遇到的问题)。


我正在尝试在 JEditorPane 中设置一些文本的样式,并且相当成功。我面临的唯一问题是似乎不可能创造利润。

基本上,我扩展了 PlainView 并覆盖了 drawUnselectedText 方法。现在我只是让它把文本染成红色并改变字体。我还重写了 drawSelectedText 方法来为文本着色。

无论光标位置如何,无论是否选择文本,这都能始终如一地工作-只要我没有设置边距

但是,如果我为 JEditorPane 设置了边距,则 JEditorPane 仅在大多数情况下有效。唯一不起作用的情况是从任何 line 的最左侧字符开始进行选择。在这种情况下,边距将被忽略,所选文本显示在 JEditorPane 的最左侧。

我知道这是一个非常具体的问题,大多数其他人可能没有经历过,而且我在网上没有找到任何关于此的内容,但我希望这里有人能找到解决方案。

有任何想法吗?甚至任何可以让我使用其他方法设置边距的东西都会非常有帮助。

4

1 回答 1

0

我放弃了为这个问题寻找一个优雅的解决方案。基本上,我创建了一个 hack,它测试是否存在发生错误的条件(从左侧选择等),如果他们这样做,它会调整文本的呈现。

我真的不喜欢 hack,因为它们通常不利于可移植性和可维护性,但这似乎有效,所以我想我会将它抽象出来并希望它不会破坏任何东西。

无论如何,它的工作是关键。我没有收到任何答案,但我敢肯定有些人至少尝试过想一些事情,所以谢谢:)

顺便说一句 - 如果有人能想出一个优雅的解决方案,我仍然会接受,而不是我自己的答案(我无论如何都不能接受两天)。


编辑:这是我喜欢 Java 的原因之一。黑客不太可能导致可移植性问题 - 即使这与渲染有关(它通过与 Graphics 对象的交互来工作),它仍然应该适用于任何操作系统。

于 2010-06-20T04:34:04.147 回答