我在JavaFX表视图中显示一些数据时出现问题,以下是我的程序的代码片段。
FXML:
<Tab text="CoolTable">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<TableView fx:id="table" layoutX="14.0" layoutY="81.0" prefHeight="200.0" prefWidth="471.0">
<columns>
<TableColumn id="ID" prefWidth="75.0" text=" ID" fx:id="ID" />
<TableColumn id="Name" prefWidth="185.0" text="Name" fx:id="Name" />
</columns>
</TableView>
</children>
</AnchorPane>
</content>
</Tab>
Bean类:
public class C {
private String Name;
private int ID;
public C(Integer ID, String Name) {
this.Name = Name;
this.ID = ID;
}
public String getName() {
return Name;
}
public void setName(String cName) {
this.Name = cName;
}
public int getID() {
return ID;
}
public void setID(int cID) {
this.ID = cID;
}
}
最后是控制器类:
@FXML
private TableView<C> table;
@FXML
private TableColumn<C, Integer> ID;
@FXML
private TableColumn<C, String> Name;
。 。 。 。
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
// initialize your logic here: all @FXML variables will have been injected
ID.setCellValueFactory(new PropertyValueFactory<C, Integer>("ID"));
Name.setCellValueFactory(new PropertyValueFactory<C, String>("Name"));
table.setItems(getCDummy());
public static ObservableList<C> getCDummy(){
ObservableList<C> data = FXCollections.observableArrayList();
data.addAll(new C(1, "Jim"));
data.addAll(new C(2, "James"));
data.addAll(new C(3, "Joe"));
return data;
}
我不太确定出了什么问题,只要我能看到表格应该填充getCDummy方法生成的日期。
我知道这里有很多与JavaFX TableView问题相关的问题,但是我确实仔细查看了它们,但找不到解决问题的方法。
答案 0 :(得分:0)
如何: FXML文件:
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" fx:controller="issue.FXMLController" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TableView fx:id="table" layoutX="14.0" layoutY="81.0" prefHeight="200.0" prefWidth="471.0">
<columns>
<TableColumn id="ID" prefWidth="75.0" text=" ID" fx:id="ID" />
<TableColumn id="Name" prefWidth="185.0" text="Name" fx:id="Name" />
</columns>
</TableView>
</children>
</AnchorPane>
控制器类:
public class FXMLController implements Initializable {
@FXML
private TableView<C> table;
@FXML
private TableColumn<C, Integer> ID;
@FXML
private TableColumn<C,String> Name;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
ID.setCellValueFactory(new PropertyValueFactory<C, Integer>("ID"));
Name.setCellValueFactory(new PropertyValueFactory<C, String>("Name"));
table.setItems(getCDummy());}
public static ObservableList<C> getCDummy(){
ObservableList<C> data = FXCollections.observableArrayList();
data.addAll(new C(1, "Jim"));
data.addAll(new C(2, "James"));
data.addAll(new C(3, "Joe"));
return data;
}
}
这对我来说很好