そのイベントの keyChar は、VK_CONTROL と VK_C の両方に同時に等しくなることはありません。あなたがしたいことは、イベントの修飾子として CONTROL キーをチェックすることです。エディター ペインにテキストを挿入または追加する場合は、テキストを含む下層の Document オブジェクトを取得し、そこにテキストを挿入することをお勧めします。このコンテキストのキー イベントがエディタ ペインからのみ発生した可能性があることがわかっている場合は、次のようなことができます。
if (e.getKeyCode() == KeyEvent.VK_C &&
(e.getModifiers() & KeyEvent.CTRL_MASK) == KeyEvent.CTRL_MASK) {
JEditorPane editorPane = (JEditorPane) e.getComponent();
int caretPos = editorPane.getCaretPosition();
try {
editorPane.getDocument().insertString(caretPos, "desired string", null);
} catch(BadLocationException ex) {
ex.printStackTrace();
}
}
完全な例を次に示します。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.text.BadLocationException;
public class EditorPaneEx {
public static void main(String[] args) {
JFrame frame = new JFrame();
JEditorPane editorPane = new JEditorPane();
editorPane.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent ev) {
if (ev.getKeyCode() == KeyEvent.VK_C
&& (ev.getModifiers() & KeyEvent.CTRL_MASK) == KeyEvent.CTRL_MASK) {
JEditorPane editorPane = (JEditorPane) ev.getComponent();
int caretPos = editorPane.getCaretPosition();
try {
editorPane.getDocument().insertString(caretPos,
"desired string", null);
} catch (BadLocationException ex) {
ex.printStackTrace();
}
}
}
});
frame.add(editorPane);
frame.pack();
frame.setVisible(true);
}
}