Я добавил ключевое слово в поле JTextArea, но он не ведет себя так, как я ожидал.JTextArea new line on shift + enter
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("");
}
}
}
}
}
});
Я хочу это: - Если кнопка возврата подбит и сдвиг вниз: добавить новую строку. - Если кнопка возврата нажата, а кнопка переключения не опускается: нет новой строки, но отправьте.
Теперь он ведет себя следующим образом: - Если я нажму кнопку возврата и сдвиг вниз: ни одна строка не добавлена. Ничего не произошло. - Если я нажму кнопку возврата, а смена не будет: отправлена, но если я начну печатать снова, она начнется на новой строке.
Кто-нибудь знает, как делать то, что я хочу?
EDIT:
Я попробовал некоторые другие код для обнаружения, если кнопка переключения вниз:
if((k.getModifiersEx() == KeyEvent.SHIFT_DOWN_MASK) ||
(k.getModifiers() == KeyEvent.SHIFT_DOWN_MASK)) {
Это не работает, а
Спасибо! Это необходимое мне решение! – dododedodonl
+1 за наименее хакерский ответ, который я нашел в Интернете. – sethro