James_D 说你必须@Override public boolean equals(Object obj)在你的类中添加方法。这将允许您使用默认的列表contains()函数,因此您可以在控制器代码中执行类似的操作
if(!table.getItems().contains(newObj))
   table.getItems().add(newObj);
这是示例代码:
public void start(Stage primaryStage) throws Exception {
        ObservableList<MyObject> items = FXCollections.observableArrayList(
                new MyObject("Robert"),
                new MyObject("Nick"),
                new MyObject("John"),
                new MyObject("Kate"));
        TableView<MyObject> table = new TableView<>();
        table.setItems(items);
        TableColumn<MyObject, String> column = new TableColumn<>("Column Name");
        column.setCellValueFactory(new PropertyValueFactory<>("name"));
        table.getColumns().addAll(column);
        table.setItems(items);
        TextField textField = new TextField();
        Button button = new Button("Add");
        button.setOnMouseClicked(event -> {
            MyObject newObj = new MyObject(textField.getText());
            if(!table.getItems().contains(newObj)){
                table.getItems().addAll(newObj);
            }
        });
        VBox root = new VBox();
        root.getChildren().addAll(table, textField, button);
        primaryStage.setScene(new Scene(root, 600, 475));
        primaryStage.show();
    }
    public static class MyObject {
        private String name;
        public MyObject(String name) {
            setName(name);
        }
        @Override
        public boolean equals(Object obj) {
            return obj instanceof MyObject &&
                    ((MyObject) obj).name.equals(name);
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
这将是一个正确的方法,但如果您无法更改对象类,您始终可以使用此或类似的辅助函数。
  public static boolean contains(TableView<MyObject> table, MyObject obj){
        for(MyObject item: table.getItems())
            if (item.getName().equals(obj.getName()))
                return true;
        return false;
    }

| 归档时间: | 
 | 
| 查看次数: | 3432 次 | 
| 最近记录: |