【问题标题】:Creating a left-hand margin for a JEditorPane text box为 JEditorPane 文本框创建左边距
【发布时间】:2010-06-20 00:45:14
【问题描述】:

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


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

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

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

但是,如果我为 JEditorPane 设置边距,则 JEditorPane 仅在大部分时间都有效。唯一不起作用的情况是从任何行的最左侧字符开始进行选择时。在这种情况下,边距会被忽略,所选文本会出现在 JEditorPane 的最左侧。

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

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

【问题讨论】:

  • 如果你不扩展PlainView,它会这样吗?
  • 没有。如果我只是不覆盖 drawUnselectedText 方法,它的行为也不会那样,所以我认为这是我问题的根源。

标签: java jeditorpane


【解决方案1】:

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

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

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

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


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

【讨论】:

    猜你喜欢
    • 2011-04-13
    • 2016-08-17
    • 2016-07-08
    • 1970-01-01
    • 2022-01-20
    • 2015-05-11
    • 2015-06-10
    • 2019-09-23
    • 2022-01-18
    相关资源
    最近更新 更多