【问题标题】:CheckBoxTableCell Can't be selected on javaFX无法在 javaFX 上选择 CheckBoxTableCell
【发布时间】:2021-11-08 02:14:25
【问题描述】:

JavaFx 新手我使用场景构建器创建了一个视图表,其中包含一个名为 checkedCol 的表列,该列应该包含复选框,在我的控制器上我以这种方式创建了这些复选框:

    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{

     @FXML
     private TableView<OMission> missionTable;

    @FXML
    private TableColumn<OMission, Boolean> checkedCol; 

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

    public void load_recap(){
    

      .....

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

                    checkedCol.setEditable(true);


          }
          }

在模型类我有这个代码:

    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 代码:

<?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="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.RecapController">
   <children>
      <JFXButton layoutX="16.0" layoutY="22.0" onAction="#OpenMission" style="-fx-background-color: #0A4969;" text="Ajouter une nouvelle mission : " textFill="WHITE">
         <font>
            <Font size="14.0" />
         </font>
      </JFXButton>
      <TableView fx:id="missionTable" layoutX="16.0" layoutY="64.0" prefHeight="659.0" prefWidth="1226.0">
                    <columns>
                      <TableColumn prefWidth="612.5" text="RAPPORT DE MISSION">
                           <columns>
                                
                              
                              <TableColumn fx:id="local" prefWidth="100.0" text="Localité" />
                              <TableColumn fx:id="objmission" prefWidth="243.0" text="Objet Mission" />
                              
                           </columns>
                        </TableColumn>
                    
            <TableColumn fx:id="checkedCol"  prefWidth="75.0" text="select" />
                    </columns>
                  </TableView>
      <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" />

   </children>
    

问题是我没有得到任何错误,但我什至无法选择/检查我的视图表上的复选框,我无法弄清楚问题:) 有什么想法吗?提前致谢。

有什么想法吗?

【问题讨论】:

标签: java javafx checkbox javabeans


【解决方案1】:

从您的代码中不清楚Tableview 是否可编辑。假设TableViewmissionTable,试试:

missionTable.setEditable(true);

或者,您可以通过添加 editable="true" 在 FXML 中设置 Tableview 可编辑:

<TableView fx:id="missionTable" editable="true" layoutX="16.0" layoutY="64.0" prefHeight="659.0" prefWidth="1226.0">

【讨论】:

  • 这行得通,我认为这不是问题,非常有帮助谢谢:)
  • 我使用 FXML 添加了第二种选择。很高兴它有帮助;)
  • 当然,您能告诉我如何以这种方式获得选中的复选框吗?
  • “以这种方式获取选中的复选框”是什么意思?
  • 我的 fxml 代码中有一个 JFXButton,当我点击它时我想得到,用户选择的所有行(复选框 = true)
猜你喜欢
  • 2018-04-06
  • 2015-04-24
  • 2021-08-02
  • 2019-06-20
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
相关资源
最近更新 更多