Как выполнить событие щелчка мыши в tableview JavaFX

#java #javafx #tableview

#java #javafx #просмотр таблицы

Вопрос:

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

Проблема, которую я получаю, «Вызвана: javafx.fxml.Исключение LoadException: ошибка при разрешении onMouseClicked=’#clickItem’, либо обработчика события нет в пространстве имен, либо в скрипте ошибка.» Я использую конструктор сцен и объявил метод «При щелчке мышью» и все еще получаю ошибку.

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

 public void showAvailability(MouseEvent event) { 

    selected = groupsTable.getSelectionModel().getSelectedItem();
    boolean checkAvailability  = checkSpaceInGroup(selected);

    if(checkAvailability){
        availabilityStatus.setText("Space in Group");
        availabilityPane.setStyle("-fx-background-color: #"   "388e3c ");
    }
    else{
        availabilityStatus.setText("NO SPACE");
        availabilityPane.setStyle("-fx-background-color: #"   "ffcdd2 ");

    }
}
  

Комментарии:

1. Я рекомендую вместо этого прислушаться к модели выбора. groupsTable.getSelectionModel().selectedItemProperty().addListener((o, oldSelection, newSelection) -> { /* ... */ });

Ответ №1:

Возможно, вы импортировали неправильную библиотеку: (не уверен, не просматривая весь код)

 import java.awt.event.??
  

вместо:

 import javafx.event.??
  

Однако вы можете создать событие из вашего метода инициализации в классе контроллера, например:

 groupsTable.setOnMouseClicked((MouseEvent event) -> { 
 //your code goes here
}
  

В этом случае MouseEvent импортируется с помощью:

 import javafx.scene.input.MouseEvent;
  

Надеюсь, это поможет!

Комментарии:

1. Вы, сэр, легенда! Вы правы, я импортировал import java.awt.event.?? и я создал событие в методе initialize, и оно сработало. Спасибо!!!