JAVAFX列不填充字符串

时间:2017-08-27 21:32:29

标签: java fxml

我有一个列绑定到一个可观察列表,该列表不会显示底层对象的String组件,但会显示这些数字。我不知道这是怎么可能的。这是我的代码。

产品类

public class MainMenuController implements Initializable {

    @FXML
    private TableView<Product> tblReceipt;

    @FXML
    private TableColumn<Product, String> colName;

    @FXML
    private TableColumn<Product, String> colQuantity;

    @FXML
    private TableColumn<Product, String> colPrice;

    private double total;

    private final ObservableList<Product> data = FXCollections.observableArrayList(new Product("Steak", 1, 2.00), new Product("Eggs", 3, 5.00));


    @Override
    public void initialize(URL url, ResourceBundle rb) {
           tblReceipt.setEditable(false);
           colName.setCellValueFactory(new PropertyValueFactory<>("name"));
           colQuantity.setCellValueFactory(new PropertyValueFactory<>("quantity"));
           colPrice.setCellValueFactory(new PropertyValueFactory<>("cost"));
           tblReceipt.setItems(data);

    } 

主控制器

  <TableView fx:id="tblReceipt" layoutX="7.0" layoutY="34.0" prefHeight="375.0" prefWidth="227.0">
<columns>
  <TableColumn fx:id="colName" prefWidth="75.0" text="Item" />
  <TableColumn fx:id="colQuantity" prefWidth="75.0" text="Quantity" />
  <TableColumn fx:id="colPrice" prefWidth="75.0" text="Price" />
</columns>

FXML

tab.js

我从场景构建器得到错误,即colName没有可注入字段,这是问题所在。但是,它显然存在。

2 个答案:

答案 0 :(得分:0)

tblReceipt有一个名为colItem的列,而不是colName。尝试修复它,看看你得到了什么。

答案 1 :(得分:0)

问题在这一行中非常简单

colName.setCellValueFactory(new PropertyValueFactory<>("name"));

您没有将其与 FXML 文件绑定

打开 Scene Builder 并设置colName ID

希望这是解决方案