【问题标题】:Make clicking on a tab character change the caret properly使单击制表符正确更改插入符号
【发布时间】:2014-07-11 20:10:59
【问题描述】:

在大多数被认为不错的文本编辑器中,单击制表符 (\t) 会将插入符号更改为字符的左侧或右侧,具体取决于单击的位置。

下面举例说明:

左图显示,如果我单击,插入符号将位于角色的左侧。右侧显示,如果我单击,我的插入符号将位于字符的右侧。

在我的编辑器中,插入符号仅在光标实际位于两个字符之间时才会更改。我一直在尝试更改我的TabStops 中的属性,但这些似乎都不起作用。

问题是:如何让我的制表符点击正确响应光标位置?

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    我想你使用 JEditorPane 实例。

    其实这取决于你使用的 EditorKit。对于最简单的情况,您可以尝试覆盖

    public int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
    

    LabelView 类的方法。实际上它返回模型中的位置(插入符号),用于单击位置(x,y)。

    如果你使用 HTMLEditorKit,那就更难了。

    【讨论】:

    • 好吧,我实际上在使用 JTextPane。覆盖 viewToModel 不起作用 - 奇怪的是,它根本没有被调用。还有其他想法吗?
    • 你覆盖视图吗?还是 JTextPane 的方法?
    • @StanislavL 请问这段代码有什么问题(在这里查看我删除的帖子)
    • @mKorbel 对我来说没有错。它仍然提供默认行为。
    • @Bart Pelle 默认没有任何其他想法,您必须发布一个 SSCCE/MCVE,简短、可运行、可在局部变量中使用 JTextComponent 的硬编码值进行编译
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多