Java JEditorPane

ChatGUI

Я использую 2 JEditorPane для передачи текста от одного к другому.

как только я передал данные, я делаю следующее:

JEditorPane.setText(null);

JEditorPane.setCaretPosition(0);

но, как видно из прикрепленного изображения, действие return заставляет подсказку отображаться на строку вниз. Как я могу это исправить?

РЕДАКТИРОВАТЬ: кажется ли вам следующее правильное? если так, то почему карет не позиционирует себя в позиции 0?

    private class MyKeyAdapter extends KeyAdapter {

    @Override
    public void keyPressed(KeyEvent ke) {

        int kc = ke.getKeyCode();

        if (kc == ke.VK_ENTER) {

            System.out.println(editorPaneHistory.getText());

            System.out.println(editorPaneHomeText.getText());

            editorPaneHistory.setText(editorPaneHomeText.getText());

            //JEditorPane - editorPaneHistory
            //JEditorPane - editorPaneHomeText

            editorPaneHomeText.setText(null);

            editorPaneHomeText.setCaretPosition(0);

        }
    }
}

2 ответа

Решение

После запуска кода JEditorPane реагирует на клавишу ввода обычным способом, вставляя новую строку. Попробуйте позвонить ke.consume() "потреблять" событие, чтобы сам JEditorPane не обрабатывал его.

Не используйте KeyListener. Вы должны использовать пользовательское действие. Таким образом, вы можете заменить действие по умолчанию. Читайте о привязках клавиш.

Другие вопросы по тегам