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

204 views Asked by At

If I put the cursor in the middle of <p>A line of text</p> and hit enter I get

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

This is on my Linux dev machine.

When I run the same application on a Windows machine, I get

<p>A line
of text</p>

i.e. a \n inserted instead of creating an extra <p> element. Since \n is just rendered as a space in HTML, enter basically doesn't work when I'm on Windows.

Question: How do I force the insert <p> behavior upon enter on Windows?

1

There are 1 answers

1
camickr On BEST ANSWER

According to Key Bindings the Enter key is mapped to the "insert-break" Acton.

In Windows this Action is defined in the 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");
        }
    }
}

and simply adds "\n" as you suggest.

If you have different behaviour on Linux then I would guess a custom Action is added to the HTMLEditorKit to insert the paragraph tag.

So I would suggest you need to find that Action and then add it to the HTMLEditorKit in the Windows platform.