Java 如何使用多个TableView获取选定的TableView
我正在用javafx建立一个时间表,我正在使用5个表视图,每个表视图用于一周中的一天(周一到周五)。 我想用按钮从TableView中删除一个项目。 从一个特定的表视图中删除项目对我来说没有问题。但是我想让这个按钮适用于所有的表视图 所以我的问题是:有没有一种方法可以获取所选的TableView? 不仅仅是一个表视图中的选定项Java 如何使用多个TableView获取选定的TableView,java,uitableview,javafx,tableview,Java,Uitableview,Javafx,Tableview,我正在用javafx建立一个时间表,我正在使用5个表视图,每个表视图用于一周中的一天(周一到周五)。 我想用按钮从TableView中删除一个项目。 从一个特定的表视图中删除项目对我来说没有问题。但是我想让这个按钮适用于所有的表视图 所以我的问题是:有没有一种方法可以获取所选的TableView? 不仅仅是一个表视图中的选定项 @FXML public void fachLoeschen() { TableView<Fach> tableview = new TableVie
@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);
}
@FXML public void fachLoeschen(){
TableView TableView=新建TableView();
//tableview=选中项目所在的tableview
int-selectedx=tableview.getSelectionModel().getSelectedIndex();
如果(选择edidx==-1)返回;
Fach Fach=tableview.getSelectionModel().getSelectedItem();
var alert=new alert(alert.AlertType.CONFIRMATION,“是否确实要删除:”+fach.getFach()+“?”,ButtonType.YES,ButtonType.NO);
如果(alert.showAndWait().orElse(ButtonType.NO)==ButtonType.YES)tableview.getItems().remove(selectedx);
}
这是该方法的代码。“fach”(我是德国人)一词代表课程表中的课程。您可以跟踪哪个表视图上次有焦点:
private TableView<Fach> currentFocusedTable ;
// ...
public void initialize() {
// existing code...
for (TableView<Fach> table : listOfAllTables) {
table.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
if (isNowFocused) {
currentFocusedTable = table ;
}
});
}
}
我不确定这是您需要的还是您正在寻找的,但您是否尝试过查看哪个节点具有焦点?不,没有节点“选定”的一般概念(焦点可能在附近,但不一定)。应用程序代码必须根据域范围来设计/实现它——这里f.i.current==Monday——并始终保持它与ui状态同步。。可能,但更像是解决问题Y部分的方法,不是吗;)X似乎是OP上下文建模中缺少的“选定”概念(框架无法提供,但必须由应用程序代码设计/实现):这可以想象为与“最集中”相关,但两者不一定总是相同的。只是说……)
@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);
}