我有一个列绑定到一个可观察列表,该列表不会显示底层对象的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没有可注入字段,这是问题所在。但是,它显然存在。
答案 0 :(得分:0)
tblReceipt
有一个名为colItem
的列,而不是colName
。尝试修复它,看看你得到了什么。
答案 1 :(得分:0)
问题在这一行中非常简单
colName.setCellValueFactory(new PropertyValueFactory<>("name"));
您没有将其与 FXML 文件绑定
打开 Scene Builder 并设置colName
ID
希望这是解决方案