2015-05-11 3 views
0

В настоящее время я работаю над программой обмена мгновенными сообщениями и создал текст для ввода пользователем сообщения в FXML.KeyEvent on focus JavaFX FXML

Как добавить KeyEvent для ввода ввода, когда текстовое поле имеет фокус.

Update - Пробовал, но не работает

<TextArea fx:id="area_chatInput" 
     editable="true" 
     prefHeight="60" 
     prefWidth="300" 
     wrapText="true" 
     promptText="Enter Message /> 


@FXML 
private void keyListener(KeyEvent event){ 
    if(event.getCode() == KeyCode.ENTER){ 
     System.out.println("enter pressed"); 
     sendMsg(); 
     event.consume(); 
    } 
} 
+1

Добавить ключевой элемент, к которому относится код? пожалуйста, разделите краткую версию своего кода. –

+0

, пожалуйста, будьте точны в своем вопросе - у вас есть _TextArea_ в вашем коде и говорят о _TextField_ – kleopatra

ответ

2

Вы можете добавить слушатель onKeyPressed события в TextField в fxml.

... 
<TextField fx:id="chatText" layoutX="199.0" layoutY="174.0" onKeyPressed="#keyListener" /> 
... 

В контроллере, объявить метод keyListener

public void keyListener(KeyEvent event){ 
    if(event.getCode() == KeyCode.ENTER) { 
      // Do stuff 
      ((TextField)event.getSource()).clear(); // clear textfield 
      System.out.println("Enter Pressed"); // print a message 
    } 
} 

Update - Согласно комментариям

Чтобы избежать шага курсора на следующую строку, вы должны потреблять событие , прежде чем он покинет метод.

... 
if (event.getCode() == KeyCode.ENTER) { 
    ... 
    event.consume(); // Consume Event 
} 
... 
+0

Спасибо, но я делаю это в текстовой области, где ENTER автоматически добавляет разрыв строки. Так как я могу сделать метод keyListener переопределить это –

+0

@JoshBeaver Пожалуйста, проверьте обновление. – ItachiUchiha

+0

Он все еще просто добавляет разрыв строки, я отправил свой код для ясности. –

Смежные вопросы