#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, и оно сработало. Спасибо!!!