JEdi​​torPane 中 <enter> 键的行为(使用 HtmlEditorKit)

Behavior of <enter> key in JEditorPane (with HtmlEditorKit)

如果我将光标放在 <p>A line of text</p> 的中间并点击 enter 我得到

<p>A line</p>
<p>of text</p>

这是在我的 Linux 开发机器上。

当我在 Windows 机器上 运行 相同的应用程序时,我得到

<p>A line
of text</p>

即插入 \n 而不是创建额外的 <p> 元素。由于 \n 只是在 HTML 中呈现为 space,因此当我在 Windows 时,enter 基本上不起作用。

问题: 如何在 enter[=33= 时强制执行 insert <p> 行为] 在 Windows?

根据 Key Bindings Enter 键映射到 "insert-break" Acton。

在 Windows 中,此操作定义在 DefaultEditorKit:

public static class InsertBreakAction extends TextAction {

    /**
     * Creates this object with the appropriate identifier.
     */
    public InsertBreakAction() {
        super(insertBreakAction);
    }

    /**
     * The operation to perform when this action is triggered.
     *
     * @param e the action event
     */
    public void actionPerformed(ActionEvent e) {
        JTextComponent target = getTextComponent(e);
        if (target != null) {
            if ((! target.isEditable()) || (! target.isEnabled())) {
                UIManager.getLookAndFeel().provideErrorFeedback(target);
                return;
            }
            target.replaceSelection("\n");
        }
    }
}

并按照您的建议简单地添加“\n”。

如果您在 Linux 上有不同的行为,那么我猜想已将自定义操作添加到 HTMLEditorKit 以插入段落标记。

所以我建议您需要找到该 Action,然后将其添加到 Windows 平台中的 HTMLEditorKit。