如果我只设置两个行,为什么我会看到许多复选框?

发布于 2025-01-28 18:02:53 字数 5287 浏览 4 评论 0原文

我添加fxCollections只有两个对象,但我看到了许多复选框。

我只想获得与前两个记录相对应的两个复选框。

”中


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;
    }

}

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;
    }

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文