Пытаюсь сделать так, чтобы при нажатии на enter строка не переносилась, а при зажатом shift переносилась.
Сделал boolean переменную, отвечающую за зажатый shift, это позволило мне добиться того, чтобы строка не переносилась, пока shift не зажат, но проблема в том, что по умолчанию в TextArea строка не переносится при зажатом shift.
При попытке написать textArea.setText(textArea.getText()+"\n"), каретка переносится в самое начало, при попытке перенести её в конец, весь текст в TextArea выделяется.
Решил проблему таким образом:
boolean shiftPressed = false;
textArea.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> {
KeyCode keyCode = keyEvent.getCode();
if(keyCode.equals(KeyCode.ENTER)) {
if(!shiftPressed)
method(); // метод, срабатывающий при нажатии enter без shift
else
textArea.insertText(textArea.getCaretPosition(),"\n");
keyEvent.consume();
} else if(keyCode.equals(KeyCode.SHIFT))
shiftPressed = true;
});
textArea.setOnKeyReleased(event -> {
if(event.getCode().equals(KeyCode.SHIFT))
shiftPressed = false;
});
Продвижение своими сайтами как стратегия роста и независимости