编辑 - 简而言之,我正在寻找的是一种向JEditorPane添加左边距的可靠方法(如果您愿意,可以阅读我遇到的问题)。
我试图在JEditorPane中设置一些文本的样式,并且相当成功。我面临的唯一问题是似乎无法创造利润。
基本上,我扩展了PlainView并覆盖了drawUnselectedText方法。现在我只是将文本着色为红色并更改字体。我还重写了drawSelectedText方法来为文本着色。
无论是否选择文本,无论光标位置如何,都可以保持一致。只要我没有设置边距,就可以。
但是,如果我为JEditorPane设置了保证金,那么JEditorPane只能在大部分时间内工作。唯一不起作用的情况是从任意行的最左侧字符开始选择时。在这种情况下,边距将被忽略,所选文本显示在JEditorPane的最左侧。
我知道这是一个非常具体的问题,其他大多数人可能都没有经历过,我在网上没有发现这个问题,但我希望有人在这里有解决方案。
有什么想法吗?即使是任何允许我使用其他方法设置边距的东西都非常有帮助。
答案 0 :(得分:0)
我放弃了找到这个问题的优雅解决方案。基本上我创建了一个hack来测试是否存在bug发生的条件(从左边选择等),如果他们这样做,则会调整文本的呈现。
我真的不喜欢黑客,因为它们通常不便于携带和可维护性,但这似乎有效,所以我想我会把它抽象出来并希望它不会破坏任何东西。
无论如何,它的工作是关键点。我没有收到任何答案,但我确信有些人至少试图想到什么,所以谢谢:)
顺便说一句 - 如果有人能想出一个优雅的解决方案,我仍然会接受而不是我自己的回答(我两天都不能)。编辑:这是我喜欢Java的一个原因。黑客不太可能导致可移植性问题 - 即使这与渲染有关(它通过与Graphics对象的交互起作用),它仍然适用于任何操作系统。