Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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中删除,不从observableList中删除_Java_Javafx_Tableview_Observablelist - Fatal编程技术网

Java 仅从Tableview中删除,不从observableList中删除

Java 仅从Tableview中删除,不从observableList中删除,java,javafx,tableview,observablelist,Java,Javafx,Tableview,Observablelist,好的,我得到了这个javafx应用程序,我得到了锻炼,我可以通过肌肉群过滤它们,但是当它未过滤时,我的程序将对象从Obserable list和tableView中删除,但当它过滤后,它只从tableView中删除,但对象仍然保留。所以下次我再过滤它 这是我的观察者 ObservableList<Exercise> filteredExercises = FXCollections.observableArrayList(); ObservableList<Exercise&

好的,我得到了这个javafx应用程序,我得到了锻炼,我可以通过肌肉群过滤它们,但是当它未过滤时,我的程序将对象从Obserable list和tableView中删除,但当它过滤后,它只从tableView中删除,但对象仍然保留。所以下次我再过滤它

这是我的观察者

ObservableList<Exercise> filteredExercises = FXCollections.observableArrayList();
 ObservableList<Exercise> exercises = FXCollections.observableArrayList();
下面是删除方法

 @FXML
private void deleteExercise(ActionEvent event) {
Exercise selectedItem = exTable.getSelectionModel().getSelectedItem();
for (Exercise e : exercises){
    if(selectedItem == e){
       exercises.remove(e);
    }
}
exTable.getItems().remove(selectedItem);
    System.out.println(exercises);
}
任何人都有一个解决方案来解释为什么它不能删除对象

您应该使用一个来实现此功能:

// create the lists:
ObservableList<Exercise> exercises = FXCollections.observableArrayList();

// initialize the filtered list with a filter that is always true 
// (i.e. no filtering)
ObservableList<Exercise> filteredExercises = exercises.filtered(exercise -> true);

// use the filtered list as the items list for the table:
public void initialize() {
    // ...

    exTable.setItems(filteredExercises);

    // ...
}

// filter by setting the predicate on the filtered list:
@FXML
private void filterByChest(ActionEvent event) {
    filteredExercises.setPredicate(
        exercise -> exercise.getFocusGroup().toLowerCase().contains("chest"));
}

// manipulate the list by adding/removing elements to/from the underlying list:
@FXML
private void deleteExercise(ActionEvent event) {
    Exercise selectedItem = exTable.getSelectionModel().getSelectedItem();
    exercises.remove(selectedItem);
}
//创建列表:
ObservableList exercises=FXCollections.observableArrayList();
//使用始终为true的筛选器初始化筛选列表
//(即无过滤)
ObservableList filteredExercises=exercises.filtered(exercise->true);
//将筛选后的列表用作表的项目列表:
公共无效初始化(){
// ...
exTable.setItems(filteredExercises);
// ...
}
//通过在筛选列表上设置谓词进行筛选:
@FXML
私有无效筛选器ByChest(ActionEvent事件){
filteredExercises.setPredicate(
exercise->exercise.getFocusGroup().toLowerCase().contains(“胸部”);
}
//通过在基础列表中添加/删除元素来操作列表:
@FXML
私人活动(ActionEvent事件){
练习selectedItem=exTable.getSelectionModel().getSelectedItem();
练习。移除(选择编辑项);
}
此功能应使用:

// create the lists:
ObservableList<Exercise> exercises = FXCollections.observableArrayList();

// initialize the filtered list with a filter that is always true 
// (i.e. no filtering)
ObservableList<Exercise> filteredExercises = exercises.filtered(exercise -> true);

// use the filtered list as the items list for the table:
public void initialize() {
    // ...

    exTable.setItems(filteredExercises);

    // ...
}

// filter by setting the predicate on the filtered list:
@FXML
private void filterByChest(ActionEvent event) {
    filteredExercises.setPredicate(
        exercise -> exercise.getFocusGroup().toLowerCase().contains("chest"));
}

// manipulate the list by adding/removing elements to/from the underlying list:
@FXML
private void deleteExercise(ActionEvent event) {
    Exercise selectedItem = exTable.getSelectionModel().getSelectedItem();
    exercises.remove(selectedItem);
}
//创建列表:
ObservableList exercises=FXCollections.observableArrayList();
//使用始终为true的筛选器初始化筛选列表
//(即无过滤)
ObservableList filteredExercises=exercises.filtered(exercise->true);
//将筛选后的列表用作表的项目列表:
公共无效初始化(){
// ...
exTable.setItems(filteredExercises);
// ...
}
//通过在筛选列表上设置谓词进行筛选:
@FXML
私有无效筛选器ByChest(ActionEvent事件){
filteredExercises.setPredicate(
exercise->exercise.getFocusGroup().toLowerCase().contains(“胸部”);
}
//通过在基础列表中添加/删除元素来操作列表:
@FXML
私人活动(ActionEvent事件){
练习selectedItem=exTable.getSelectionModel().getSelectedItem();
练习。移除(选择编辑项);
}

您应该从
deleteExercise
方法中得到一个异常,因为您不能在迭代列表时修改它。为什么不为此使用预定义类?我无法使FilteredList正常工作您应该从
DeleteExecute
方法中获得异常,因为您无法在迭代列表时修改它。为什么不使用预定义的类呢?我无法使FilteredList正常工作