Остановка поведения по умолчанию событий в Swing

Я столкнулся с той же проблемой, я просто добавил экземпляр Singleton, чтобы получить ресурс, как указано Эриком

MainFragmentActivity.defaultInstance().getResources().getString(R.string.app_name);

, вы также можете использовать

getActivity().getResources().getString(R.string.app_name);

Я надеюсь, что это поможет.

5
задан Macha 1 July 2009 в 12:21
поделиться

3 ответа

попробуйте добавить evt.consume () после вашего вызова sendMessage ()

private void messageTextAreaKeyPressed(java.awt.event.KeyEvent evt) { 
 if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
    sendMessage();
    evt.consume();
 }
}  
14
ответ дан 18 December 2019 в 06:23
поделиться

По умолчанию Действие для клавиши Enter в JTextArea заключается в вставке новой строки, как вы видели. Таким образом, решение состоит в замене действия по умолчанию на настраиваемое действие . Преимущество этого подхода заключается в том, что это Action также может использоваться JButton (или JMenuItem и т. Д.). Action в основном аналогичен ActionListener , все, что вам нужно сделать, это реализовать метод actionPerformed () .

Прочтите Key Bindings , чтобы увидеть, как это делается. Все компоненты Swing используют привязки клавиш.

9
ответ дан 18 December 2019 в 06:23
поделиться

как сказал Камикр, вы должны привязать действие к клавише ввода;

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 для текстового поля, используя эту технику: здесь

2
ответ дан 18 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: