在JavaFX中填充TableView的问题

时间:2015-05-24 16:45:31

标签: java javafx-8

我在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问题相关的问题,但是我确实仔细查看了它们,但找不到解决问题的方法。

1 个答案:

答案 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;
    }    

}

这对我来说很好