Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用多个TableView获取选定的TableView_Java_Uitableview_Javafx_Tableview - Fatal编程技术网

Java 如何使用多个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

我正在用javafx建立一个时间表,我正在使用5个表视图,每个表视图用于一周中的一天(周一到周五)。 我想用按钮从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);
}
@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);
}