基本上我正在尝试使用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);
}
}
答案 0 :(得分:1)
终于得到了解决方案!其实我的吸气剂和放大器序列号的setter方法与我在DataSource.java文件中声明的名称不匹配。 刚刚在DataSource.java文件中更改了以下内容:
public int getSerialNo(){
return serialNo.get();
}
public void setSerialNo(int serialNum){
serialNo.set(serialNum);
}
对于getter和amp;而言,从串口更改为SerialNo二传法。 最后它工作了!!!