我已经添加了一个keylistener到我的JTextArea字段,但它不像我预期的那样工作。JTextArea换行新行+输入
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键是向下:
if((k.getModifiersEx() == KeyEvent.SHIFT_DOWN_MASK) ||
(k.getModifiers() == KeyEvent.SHIFT_DOWN_MASK)) {
这并不工作,以及
谢谢!这是我需要的解决方案! – dododedodonl 2010-01-29 21:48:28
+1为我在网上找到的最不起眼的答案+1。 – sethro 2012-11-16 20:54:43