私は興味深い問題を抱えています。
JScrollPane内にスタイル付きテキストが入力されたJTextPaneがあります。テキストは外部デバイスから生成され、StyledDocumentに渡されます(ターミナルウィンドウのように見えます)。キープレスリスナーを使用して、入力中の各文字をデバイスに送信すると、文字が外部デバイスからドキュメントに印刷されます。これは素晴らしく機能しています!私はもっと幸せになることができませんでした!
それ外!
Enterキーを押すか、スペースを戻すと、ウィンドウの「boink」エラー音が鳴ります。JTextPaneをオーバーライドして、Enterキーまたはバックスペースを押したときに「boink」サウンドが再生されないようにするにはどうすればよいですか。
ありがとう!
キーリスナーの現在のコード
addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent ke) {
//Absorb this action.
}
@Override
public void keyReleased(KeyEvent ke) {
//Absorb this action.
}
@Override
public void keyPressed(KeyEvent evt) {
char c = evt.getKeyChar();
if (((byte) c) == 0x0A) {
c = ((char) 0x0D);
}
try {
rumIO.write(c);
} catch (Exception e) {
}
}
});
それを修正したコード!
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
InputMap inputMap = getInputMap();
ActionMap actionMap = getActionMap();
KeyStroke keyStroke = KeyStroke.getKeyStrokeForEvent(evt);
inputMap.put(keyStroke, "doNothing");
actionMap.put("doNothing", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
//Do Nothing
}
});
char c = evt.getKeyChar();
if (((byte) c) == 0x0A) {
c = ((char) 0x0D);
}
try {
rumIO.write(c);
} catch (Exception e) {
}
}
});