How to get the rows selected with checkBox on JavaFX?

I’m working on JavaFx, i have a table view created with sceneBuilder , it contains 3 columns, one of is for checkBoxes , and a button called print_tab, i want when i click on this button to get the rows selected with checkBox -> true but i don’t know how to do that :

I read many exemples about callBack the table column of checkbox but can’t figure out how to do that .

here is the controller :

    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.fxml.Initializable;
    import javafx.geometry.Insets;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.CheckBox;
    import javafx.scene.control.TableCell;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import javafx.scene.control.cell.CheckBoxTableCell;
    import javafx.scene.control.cell.PropertyValueFactory;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.AnchorPane;
    import javafx.scene.layout.HBox;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    import javafx.util.Callback;

     public class RecapController implements Initializable{

     private TableView<OMission> missionTable;

    private TableColumn<OMission, Boolean> checkedCol; 

      private ObservableList<OMission> UserMission = 
      private OMission mission=null;
    public void initialize(URL arg0, ResourceBundle arg1) {
         try {
        } catch (SQLException e) {
            // TODO Auto-generated catch block

    public void load_recap(){


    checkedCol.setCellValueFactory(new PropertyValueFactory<>("remark"));



    public void print_tab() throws Exception {

                  // here is the method that the button calls , i want to get here the selected rows with checkbox -> true                  



On class Model i have this code :

    public class OMission {

         private String ObjMission ;
         private Boolean remark;

         public OMission(  String objMission ) {

                 This.objMission = ObjMission ;

                 remark = false;

        public Boolean getRemark() {
            return remark;

        public void setRemark(Boolean remark) {
            this.remark = remark;

        public String getObjMission() {
            return ObjMission;

        public void setObjMission(String objMission) {
            ObjMission = objMission;


fxml code :

<?xml version="1.0" encoding="UTF-8"?>

<?import com.jfoenix.controls.JFXButton?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane fx:id="pan" prefHeight="740.0" prefWidth="1258.0" xmlns="" xmlns:fx="" fx:controller="application.RecapController">
      <JFXButton layoutX="16.0" layoutY="22.0" onAction="#OpenMission" style="-fx-background-color: #0A4969;" text="Ajouter une nouvelle mission : " textFill="WHITE">
            <Font size="14.0" />
      <TableView fx:id="missionTable" layoutX="16.0" layoutY="64.0" prefHeight="659.0" prefWidth="1226.0">
                      <TableColumn prefWidth="612.5" text="RAPPORT DE MISSION">
                              <TableColumn fx:id="local" prefWidth="100.0" text="Localité" />
                              <TableColumn fx:id="objmission" prefWidth="243.0" text="Objet Mission" />
            <TableColumn fx:id="checkedCol"  prefWidth="75.0" text="select" /> // That's the button i want to click on 
      <JFXButton layoutX="263.0" layoutY="25.0" onAction="#print_tab" text="print" />
      <CheckBox fx:id="SelectAll" layoutX="1154.0" layoutY="41.0" mnemonicParsing="false" text="Select All" />


Any idea ?


public void print_tab() throws Exception {

         for(OMission bean : UserMission)
        System.out.println(bean.getRemark()); // always getting false
        if(bean.getRemark()) {


I tried this way, but even though i check some checkboxes i always get false not true , any idea ? at the same time i don’t think it’s a good to iterate all the collection …


I would implement FX property pattern in OMission class:

public class OMission {

    private final StringProperty objMission = new SimpleStringProperty(this, "objMission");
    private final BooleanProperty remark = new SimpleBooleanProperty(this, "remark");

    public OMission(String objMission) {

    public StringProperty objMissionProperty() {
        return objMission;

    public String getObjMission() {
        return objMissionProperty().get();

    public void setObjMission(String objMission) {

    public BooleanProperty remarkProperty() {
        return remark;

    public Boolean getRemark() {
        return remarkProperty().get();

    public void setRemark(Boolean remark) {

Then you can replace the column CellValueFactory:

checkedCol.setCellValueFactory(new PropertyValueFactory<>("remark"));


checkedCol.setCellValueFactory(cellData -> cellData.getValue().remarkProperty());