2016-09-24 16 views
0

基本的には、JavaFXのいくつかのフィールドを持つテーブルを設定しようとしています。私は、String型のデータ型を持つフィールドを作成することはできますが、整数型のデータ型を持つフィールドにデータを設定することはできません。整数型のフィールドにデータが入力されない理由は何ですか?以下は私が作成したファイルのための私のコードです。 以下のコードにはどのような変更を加える必要がありますか?JavaFX:テーブルの列に整数値を設定できません。

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(""); 
    } 

} 

データファイル(ビーンズファイル)データソース

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); 
    } 
} 
+0

;'、また、オラクルからの公式のチュートリアル(https://docs.oracle.com/javafx/2/ui_controls/table-view.htm)で、これで顔をしています質問(https://stackoverflow.com/questions/16360323/javafx-table-how-to-add-components) – GOXR3PLUS

答えて

1

最後に解決策を得ました。実際に私のgetter &シリアル番号のsetterメソッドは、私がDataSource.javaファイルで宣言した名前と一致しませんでした。

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

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

は両方ゲッター& setterメソッドのためのSerialNoにシリアルから変更: ただ、次のようDataSource.javaファイルに次のように変更しました。 最後にそれは働いた!!!コード `setItems(データ)上のどこ

+0

あなた自身の解決策を受け入れて、「問題を解決しました」とマークすることができます。次回は、[MCVE] – c0der

+0

@ c0derをお勧めします。必要な情報をここに掲載しないと不平を言う理由はありません。質問に投稿された情報は、問題の原因を判断するのに十分です。自己受諾は、何らかの遅れ(1-2日(?))後にのみ行うことができます。フィードバックのために@ fabianに感謝します。 – fabian

+0

私は不平を言っていないが、推薦していた。私は "質問に投稿された情報は十分だ"と同意します。実際、私はあまりにも多くの情報が投稿されたと思う。それが私がMcveを推薦した理由です。 – c0der

関連する問題