'Why do I see many checkboxes if I only set two rows?

I add in FXCollections only two objects but I see many checkboxes.

I want get only two checkboxes that correspond to the first two records.

many checkbox in tableview


package unimi.sysvotes.elezione;

import javafx.collections.FXCollections;
//... and others import

public class NuovaElezioneController {
    @FXML
    private TableView<AmministratoreRiga> amministratoreTabella;

    private ObservableList<AmministratoreRiga> dati;
    
    @FXML
    private TableColumn<AmministratoreRiga,Boolean> selezioneColonna;
    
    @FXML
    private TableColumn<AmministratoreRiga,Integer>  idUtenteColonna;

    @FXML
    private TableColumn<AmministratoreRiga,String>  nomeColonna;
    
    @FXML
    private TableColumn<AmministratoreRiga,String> cognomeColonna;

    @FXML
    private TableColumn<AmministratoreRiga,String> ruoloColonna;

    @FXML
    private void initialize() {
        dati = FXCollections.observableArrayList();

        dati.addAll(new AmministratoreRiga(true,1,"Nicola","Paganotti","Utente"),
        new AmministratoreRiga(false,2,"Riccardo","Paganotti","Amministratore"));

        Callback<TableColumn<AmministratoreRiga, Boolean>, TableCell<AmministratoreRiga, Boolean>> booleanCellFactory = 
            new Callback<TableColumn<AmministratoreRiga, Boolean>, TableCell<AmministratoreRiga, Boolean>>() {
            @Override
                public TableCell<AmministratoreRiga, Boolean> call(TableColumn<AmministratoreRiga, Boolean> p) {
                    return new BooleanCell();
            }
        };

        selezioneColonna.setCellValueFactory(new PropertyValueFactory<AmministratoreRiga,Boolean>("selezione"));
        selezioneColonna.setCellFactory(booleanCellFactory);
    
        idUtenteColonna.setCellValueFactory(new PropertyValueFactory<AmministratoreRiga,Integer>("idUtente"));
       
        nomeColonna.setCellValueFactory(new PropertyValueFactory<AmministratoreRiga,String>("nome"));
        cognomeColonna.setCellValueFactory(new PropertyValueFactory<AmministratoreRiga,String>("cognome"));
        ruoloColonna.setCellValueFactory(new PropertyValueFactory<AmministratoreRiga,String>("ruolo"));
    
        amministratoreTabella.setItems(dati);
        amministratoreTabella.setEditable( true );
       
    }

    public NuovaElezioneController() {
        

    }
    
    
}

package unimi.sysvotes.anagrafica;

import javafx.beans.value.ChangeListener;
//and others import...

public class BooleanCell extends TableCell<AmministratoreRiga, Boolean> {
    private CheckBox checkBox;
    public BooleanCell() {
        checkBox = new CheckBox();
        checkBox.setDisable(true);
        checkBox.selectedProperty().addListener(new ChangeListener<Boolean> () {
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                if(isEditing())
                    commitEdit(newValue == null ? false : newValue);
            }
        });
        this.checkBox.setAlignment(Pos.CENTER);

        setAlignment(Pos.CENTER);
        setGraphic(checkBox);

    }
    @Override
    public void startEdit() {
        super.startEdit();
        if (isEmpty()) {
            return;
        }
        checkBox.setDisable(false);
        checkBox.requestFocus();
    }
    @Override
    public void cancelEdit() {
        super.cancelEdit();
        checkBox.setDisable(true);
    }
    public void commitEdit(Boolean value) {
        super.commitEdit(value);
        checkBox.setDisable(true);
    }
    @Override
    public void updateItem(Boolean item, boolean empty) {
        super.updateItem(item, empty);
        if (!isEmpty()) {
            checkBox.setSelected(item);
        }
    }
}

package unimi.sysvotes.anagrafica;

public class AmministratoreRiga {
    private Boolean selezione;
    private Integer idUtente;
    private String nome;
    private String cognome;
    private String ruolo;

    public AmministratoreRiga(Boolean selezione,
    Integer idUtente, 
    String nome, 
    String cognome, 
    String ruolo) {
        this.selezione = selezione;
        this.idUtente = idUtente;
        this.nome = nome;
        this.cognome = cognome;
        this.ruolo = ruolo;
    }

    public Boolean getSelezione() {
        return selezione;
    }

    public void setSelezione(Boolean selezione) {
        this.selezione = selezione;
    }

    public Integer getIdUtente() {
        return this.idUtente;
    }

    public void setIdUtente(Integer idUtente) {
        this.idUtente = idUtente;
    }

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCognome() {
        return this.cognome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public String getRuolo() {
        return this.ruolo;
    }

    public void setRuolo(String ruolo) {
        this.ruolo = ruolo;
    }

}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source