Я столкнулся с той же проблемой, я просто добавил экземпляр Singleton, чтобы получить ресурс, как указано Эриком
MainFragmentActivity.defaultInstance().getResources().getString(R.string.app_name);
, вы также можете использовать
getActivity().getResources().getString(R.string.app_name);
Я надеюсь, что это поможет.
попробуйте добавить evt.consume ()
после вашего вызова sendMessage ()
private void messageTextAreaKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
sendMessage();
evt.consume();
}
}
По умолчанию Действие
для клавиши Enter в JTextArea
заключается в вставке новой строки, как вы видели. Таким образом, решение состоит в замене действия по умолчанию
на настраиваемое действие
. Преимущество этого подхода заключается в том, что это Action
также может использоваться JButton
(или JMenuItem
и т. Д.). Action
в основном аналогичен ActionListener
, все, что вам нужно сделать, это реализовать метод actionPerformed ()
.
Прочтите Key Bindings , чтобы увидеть, как это делается. Все компоненты Swing используют привязки клавиш.
как сказал Камикр, вы должны привязать действие к клавише ввода;
Action sendAction = new AbstractAction("Send"){ public void actionPerformed(ActionEvent ae){ // do your stuff here } }; textarea.registerKeyboardAction(sendAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED); sendButton.setAction(sendAction);
если вас больше интересует, я реализовал функцию Autoindent для текстового поля, используя эту технику: здесь