JEditorPane 中 <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。
如果我将光标放在 <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。