如何使用多个TableView获取选中的TableView
How to get the selected TableView using multiple TableViews
我正在使用 javafx 构建一个时间表,我正在使用 5 个 TableView,每个用于一周中的一天(周一至周五)。
我想用一个按钮从 TableView 中删除一个项目。
从一个特定的 TableView 中删除一个 Item 对我来说没有问题。但我希望按钮适用于所有 TableViews。
所以我的问题是:有没有获取选中的TableView的方法?
不仅仅是从一个 TableView 中选择的项目。
@FXML public void fachLoeschen() {
TableView<Fach> tableview = new TableView<Fach>();
//tableview = the TableView in which the selected Item is
int selectedIdx = tableview.getSelectionModel().getSelectedIndex();
if (selectedIdx==-1)return;
Fach fach = tableview.getSelectionModel().getSelectedItem();
var alert = new Alert(Alert.AlertType.CONFIRMATION, "Are you sure you want to delete: "+fach.getFach()+ " ?", ButtonType.YES, ButtonType.NO);
if (alert.showAndWait().orElse(ButtonType.NO) == ButtonType.YES) tableview.getItems().remove(selectedIdx);
}
这是方法的代码。 'fach'(我是德国人)这个词代表时间表中的课程。
您可以跟踪哪个 table 视图最后获得焦点:
private TableView<Fach> currentFocusedTable ;
// ...
public void initialize() {
// existing code...
for (TableView<Fach> table : listOfAllTables) {
table.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
currentFocusedTable = table ;
}
});
}
}
然后:
@FXML public void fachLoeschen() {
if(currentFocusedTable == null) return ;
int selectedIdx = currentFocusedTable.getSelectionModel().getSelectedIndex();
if (selectedIdx==-1)return;
Fach fach = currentFocusedTable.getSelectionModel().getSelectedItem();
var alert = new Alert(Alert.AlertType.CONFIRMATION, "Are you sure you want to delete: "+fach.getFach()+ " ?", ButtonType.YES, ButtonType.NO);
if (alert.showAndWait().orElse(ButtonType.NO) == ButtonType.YES) currentFocusedTable.getItems().remove(selectedIdx);
}
我正在使用 javafx 构建一个时间表,我正在使用 5 个 TableView,每个用于一周中的一天(周一至周五)。 我想用一个按钮从 TableView 中删除一个项目。 从一个特定的 TableView 中删除一个 Item 对我来说没有问题。但我希望按钮适用于所有 TableViews。
所以我的问题是:有没有获取选中的TableView的方法? 不仅仅是从一个 TableView 中选择的项目。
@FXML public void fachLoeschen() {
TableView<Fach> tableview = new TableView<Fach>();
//tableview = the TableView in which the selected Item is
int selectedIdx = tableview.getSelectionModel().getSelectedIndex();
if (selectedIdx==-1)return;
Fach fach = tableview.getSelectionModel().getSelectedItem();
var alert = new Alert(Alert.AlertType.CONFIRMATION, "Are you sure you want to delete: "+fach.getFach()+ " ?", ButtonType.YES, ButtonType.NO);
if (alert.showAndWait().orElse(ButtonType.NO) == ButtonType.YES) tableview.getItems().remove(selectedIdx);
}
这是方法的代码。 'fach'(我是德国人)这个词代表时间表中的课程。
您可以跟踪哪个 table 视图最后获得焦点:
private TableView<Fach> currentFocusedTable ;
// ...
public void initialize() {
// existing code...
for (TableView<Fach> table : listOfAllTables) {
table.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
currentFocusedTable = table ;
}
});
}
}
然后:
@FXML public void fachLoeschen() {
if(currentFocusedTable == null) return ;
int selectedIdx = currentFocusedTable.getSelectionModel().getSelectedIndex();
if (selectedIdx==-1)return;
Fach fach = currentFocusedTable.getSelectionModel().getSelectedItem();
var alert = new Alert(Alert.AlertType.CONFIRMATION, "Are you sure you want to delete: "+fach.getFach()+ " ?", ButtonType.YES, ButtonType.NO);
if (alert.showAndWait().orElse(ButtonType.NO) == ButtonType.YES) currentFocusedTable.getItems().remove(selectedIdx);
}