0

ChatGUI

2つのJEditorPaneを使用して、テキストを1つから別のJEditorPaneに転送します。

データを転送したら、次のようにします。

JEditorPane.setText(null);

JEditorPane.setCaretPosition(0);

ただし、添付の画像からわかるように、リターンアクションにより、プロンプトが1行下に表示されます。どうすればこれを修正できますか?

編集:次はあなたにとって正しいと思われますか?もしそうなら、なぜキャレットは自分自身をキャラクター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);

        }
    }
}
4

2 に答える 2

1

コードの実行後、JEditorPaneは、改行を挿入することにより、通常の方法でEnterキーに反応します。ke.consume()JEdi​​torPane自体がイベントを処理しないように、イベントを「消費」するように呼び出してみてください。

于 2010-04-26T20:53:56.277 に答える
0

KeyListenerを使用しないでください。カスタムアクションを使用する必要があります。このようにして、デフォルトのアクションを置き換えることができます。キーバインディングを読んでください。

于 2010-04-27T02:20:12.857 に答える