JavaFX:无法填充表列中的整数值

时间:2016-09-24 04:24:22

标签: java javafx fxml

基本上我正在尝试使用JavaFX中的某些字段填充表。我能够填充具有String数据类型的字段,但无法用整数数据类型填充字段。任何人都可以抛出为什么整数字段没有填充?下面是我创建的文件的代码。 应该对代码进行哪些更改?

FXML文件:

 
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.Tooltip?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="619.0" prefWidth="676.0" xmlns="http://javafx.com/javafx/8.0.91" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.FXMLController">
   <children>
      <Label layoutX="86.0" layoutY="60.0" text="Project Name">
         <font>
            <Font name="Segoe UI Semibold" size="13.0" />
         </font>
      </Label>
      <TextField fx:id="projectName" layoutX="181.0" layoutY="57.0" prefHeight="25.0" prefWidth="396.0" promptText="Enter your Project Name">
         <tooltip>
            <Tooltip text="Enter your Project name" />
         </tooltip>
      </TextField>
      <Label layoutX="86.0" layoutY="97.0" text="Environment">
         <font>
            <Font name="Segoe UI Semibold" size="13.0" />
         </font>
      </Label>
      <TextField fx:id="environment" layoutX="181.0" layoutY="94.0" prefHeight="25.0" prefWidth="396.0" promptText="Enter your Environment Name" />
      <Label layoutX="86.0" layoutY="138.0" text="Server URL">
         <font>
            <Font name="Segoe UI Semibold" size="13.0" />
         </font>
      </Label>
      <TextField fx:id="serverURL" layoutX="181.0" layoutY="135.0" prefHeight="25.0" prefWidth="396.0" promptText="Enter your URL details" />
      <Button fx:id="addDetails" layoutX="175.0" layoutY="188.0" mnemonicParsing="false" onAction="#addDetails" prefHeight="25.0" prefWidth="75.0" text="Add">
         <font>
            <Font name="Segoe UI Semibold" size="12.0" />
         </font>
      </Button>
      <Button fx:id="updateDetails" layoutX="311.0" layoutY="188.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="75.0" text="Update">
         <font>
            <Font name="Segoe UI Semibold" size="12.0" />
         </font>
      </Button>
      <Button fx:id="deleteDetails" layoutX="460.0" layoutY="188.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="75.0" text="Delete">
         <font>
            <Font name="Segoe UI Semibold" size="12.0" />
         </font>
      </Button>
      <TableView fx:id="tblDetails" editable="true" layoutX="85.0" layoutY="247.0" prefHeight="200.0" prefWidth="519.0">
        <columns>
          <TableColumn fx:id="colSerial" prefWidth="40.0" text="Sr.No.">
          <cellValueFactory>
                <PropertyValueFactory property="serialNo" />
             </cellValueFactory>
           </TableColumn>
          <TableColumn fx:id="colProjectName" prefWidth="106.0" text="Project Name">
            <cellValueFactory>
                <PropertyValueFactory property="projectName" />
             </cellValueFactory>
           </TableColumn>
           <TableColumn fx:id="colEnvironment" prefWidth="78.0" text="Environment">
            <cellValueFactory>
                <PropertyValueFactory property="environment" />
             </cellValueFactory>
            </TableColumn> 
            <TableColumn fx:id="colServerURL" minWidth="0.0" prefWidth="203.0" text="Server URL">
            <cellValueFactory>
                <PropertyValueFactory property="serverURL" />
             </cellValueFactory>
             </TableColumn>
            <TableColumn fx:id="colDefault" prefWidth="91.0" text="Default">
            <cellValueFactory>
                <PropertyValueFactory property="defaultValue" />
             </cellValueFactory>
             </TableColumn>
        </columns>
         <columnResizePolicy>
            <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
         </columnResizePolicy>
      </TableView>
      <CheckBox fx:id="defaultIndicator" layoutX="591.0" layoutY="61.0" mnemonicParsing="false" prefHeight="19.0" prefWidth="75.0" text="Default">
         <font>
            <Font name="Segoe UI Semibold" size="13.0" />
         </font>
         <tooltip>
            <Tooltip contentDisplay="RIGHT" text="Check this box to make the current server as default one." />
         </tooltip>
      </CheckBox>
      <RadioButton fx:id="dbUpdateInd" layoutX="83.0" layoutY="466.0" mnemonicParsing="false" text="Select this option to update DB details for Dashboard Report Generator">
         <font>
            <Font name="Segoe UI Semibold" size="13.0" />
         </font>
      </RadioButton>
      <Pane fx:id="dbDetailsPane" layoutX="86.0" layoutY="485.0" prefHeight="89.0" prefWidth="519.0">
         <children>
            <Label layoutY="13.0" text="DB Server URL">
               <font>
                  <Font name="Segoe UI Semibold" size="13.0" />
               </font>
            </Label>
            <TextField fx:id="dbServerURL" layoutX="97.0" layoutY="9.0" prefHeight="25.0" prefWidth="389.0" promptText="Enter your DB Server URL">
               <tooltip>
                  <Tooltip text="Enter your Project name" />
               </tooltip>
            </TextField>
            <Label layoutY="45.0" text="DB UserName">
               <font>
                  <Font name="Segoe UI Semibold" size="13.0" />
               </font>
            </Label>
            <TextField fx:id="dbUsername" layoutX="97.0" layoutY="42.0" prefHeight="25.0" prefWidth="143.0" promptText="DB Server UserName">
               <tooltip>
                  <Tooltip text="Enter your Project name" />
               </tooltip>
            </TextField>
            <Label layoutX="253.0" layoutY="45.0" text="DB Password">
               <font>
                  <Font name="Segoe UI Semibold" size="13.0" />
               </font>
            </Label>
         </children>
      </Pane>
      <PasswordField fx:id="dbPassword" layoutX="428.0" layoutY="528.0" prefHeight="25.0" prefWidth="143.0" promptText="DB Server Password" />
   </children>
   <cursor>
      <Cursor fx:constant="DEFAULT" />
   </cursor>
</Pane>

控制器文件:FXMLController

package application;


import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

public class FXMLController extends TableCell<DataSource, Integer> {
    @FXML private TableView<DataSource> tblDetails;
    @FXML private TableColumn<DataSource, Number> colSerial = new TableColumn<DataSource, Number>("serialNo");
    //@FXML private TextField serialNo;
    @FXML private TextField projectName;
    @FXML private TextField environment;
    @FXML private TextField serverURL;
    @FXML private CheckBox defaultIndicator;

    //Integer serial = 0;

    static int serial = 0;
    @FXML
    protected void addDetails(ActionEvent event){
        ObservableList<DataSource> data = tblDetails.getItems();
        CellDataFeatures cellData;
        DataSource ds = new DataSource();
        serial++;
        //ds.setSerial(serial);;
        System.out.println(ds.getSerial());
        //int ser = ds.setSerial(serial++);
        data.add(new DataSource(ds.getSerial(),projectName.getText(),environment.getText(),serverURL.getText(),defaultIndicator.getText()));

        projectName.setText("");
        environment.setText("");
        serverURL.setText("");
        defaultIndicator.setText("");
    }

}

数据文件(Beans文件)DataSource

package application;

import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;

public class DataSource {
    private int serial = 0;
    private final SimpleIntegerProperty serialNo = new SimpleIntegerProperty();
    //private final SimpleStringProperty serialNo = new SimpleStringProperty("");
    private final SimpleStringProperty projectName = new SimpleStringProperty("");
    private final SimpleStringProperty environment = new SimpleStringProperty("");
    private final SimpleStringProperty serverURL = new SimpleStringProperty("");
    private final SimpleStringProperty defaultValue = new SimpleStringProperty("");

    public DataSource(){
        this(1,"","","","");
    }

    public DataSource(Integer serial, String projectName,String envName, String serverURL, String defaultValue){
        serial = 0; serial++;
        setSerial(serial);
        setEnvironment(envName);
        setProjectName(projectName);
        setServerURL(serverURL);
        setDefaultValue(defaultValue);
    }

    public int getSerial(){
        return serialNo.get();
    }

    public void setSerial(int serialNum){
        serialNo.set(serialNum);
    }

    public String getProjectName(){
        return projectName.get();
    }

    public void setProjectName(String prjName){
        projectName.set(prjName);
    }

    public String getEnvironment(){
        return environment.get();
    }

    public void setEnvironment(String envName){
        environment.set(envName);
    }

    public String getServerURL(){
        return serverURL.get();
    }

    public void setServerURL(String serverUrl){
        serverURL.set(serverUrl);
    }

    public String getDefaultValue(){
        return defaultValue.get();
    }

    public void setDefaultValue(String defaultInd){
        defaultValue.set(defaultInd);
    }
}

1 个答案:

答案 0 :(得分:1)

终于得到了解决方案!其实我的吸气剂和放大器序列号的setter方法与我在DataSource.java文件中声明的名称不匹配。 刚刚在DataSource.java文件中更改了以下内容:

public int getSerialNo(){
        return serialNo.get();
    }

    public void setSerialNo(int serialNum){
        serialNo.set(serialNum);
    }

对于getter和amp;而言,从串口更改为SerialNo二传法。 最后它工作了!!!