我在我的 JTextArea 字段中添加了一个 keylistener,但它的行为不像我预期的那样。
inputTextArea.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent k) {
//If the return button is hit, only set to a new line if shift is also down.
if(k.getKeyChar() == KeyEvent.VK_ENTER) {
if(k.isShiftDown()) {
inputTextArea.append(" \n");
} else {
//Send The Message...
boolean cleanTextField = false;
try {
sendMessage(inputTextArea.getText());
cleanTextField = true;
msgScrollPane.setAutoscrolls(true);
JScrollBar vbar = msgScrollPane.getVerticalScrollBar();
if ((vbar.getValue() + vbar.getVisibleAmount()) == vbar.getMaximum()) {
msgPane.setCaretPosition(msgDoc.getLength());
}
} catch (Exception ex) {
ex.printStackTrace();
cleanTextField = false;
} finally {
if(cleanTextField) {
inputTextArea.setText("");
}
}
}
}
}
});
我想要这个: - 如果返回按钮被按下并且 shift 被按下:添加一个新行。- 如果按下返回按钮并且没有按下 shift 按钮:没有新行,但提交。
现在它的行为是这样的: - 如果我按下返回按钮并且 shift 是向下的:没有添加任何行。没发生什么事。- 如果我按下返回按钮并且 shift 未按下:已提交,但如果我再次开始输入,它将从新行开始。
有人知道如何做我想做的事吗?
编辑:
我尝试了一些其他代码来检测换档按钮是否按下:
if((k.getModifiersEx() == KeyEvent.SHIFT_DOWN_MASK) ||
(k.getModifiers() == KeyEvent.SHIFT_DOWN_MASK)) {
这也不起作用