使用 setItems 方法向 TableView 中输入数据
Entering data into TableView using setItems method
我正在尝试使用 setItems 方法填充我的 javafx 应用程序 TableView,
在这样做的同时,我首先定义了我的控制器路径,方法是
fx:"sample.Application"
然后我用 class 名称 "Products" 定义了我的数据模型,其中包含所有必要的构造函数、getter 和 setter。然后我开始编写我的控制器代码,我定义了所有必要的 fx:带有 FXML 注释的 id,我重写了显然没有给出错误的初始化方法,还填充了 TableView 我使用了 ObserverList 并通过使用 observerArrayList 调用了 Products 的构造函数,在最后,当我尝试使用 setItems() 用 fx:id ="table" 填充 TableView 时,出现错误:
table.setItems(prodList);
错误:
Error:(46, 19) java: identifier expected
Error:(46, 28) java: identifier expected
代码如下:
FXML CODE:
<TableView fx:id="table" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.halignment="LEFT" GridPane.rowIndex="3" >
<columns>
<TableColumn fx:id="col_id" text="PRODUCT ID"/>
<TableColumn fx:id="col_name" text="NAME"/>
<TableColumn fx:id="col_price" text="PRICE" />
<TableColumn fx:id="col_tax" text="TAX" />
<TableColumn fx:id="col_discount" text="DISCOUNT" />
</columns>
</TableView>
Controller code
public class Application implements Initializable {
@FXML
private TableView<Products> table;
@FXML
private TableColumn<Products, Integer> col_id;
@FXML
private TableColumn<Products, String> col_name;
@FXML
private TableColumn<Products, Integer> col_price;
@FXML
private TableColumn<Products, Integer> col_tax;
@FXML
private TableColumn<Products, Integer> col_discount;
final ObservableList<Products> prodList = FXCollections.observableArrayList(
new Products(11, "Laptop", 25000, 23, 12 )
);
@Override
public void initialize(URL location, ResourceBundle resources) {
col_id.setCellValueFactory(new PropertyValueFactory<>("productId"));
col_name.setCellValueFactory(new PropertyValueFactory<>("name"));
col_price.setCellValueFactory(new PropertyValueFactory<>("price"));
col_tax.setCellValueFactory(new PropertyValueFactory<>("tax"));
col_discount.setCellValueFactory(new PropertyValueFactory<>("discount"));
}
table.setItems(prodList); //error
}
您还没有在初始化方法中设置 属性 值工厂。我认为这是造成问题的原因。
PropertyValueFactory<>
里面什么也没有。您必须按照下面给出的方式进行设置 -
col_id.setCellValueFactory(new PropertyValueFactory<Products, Integer>("productId"));
col_name.setCellValueFactory(new PropertyValueFactory<Products, String>("name"));
col_price.setCellValueFactory(new PropertyValueFactory<Products, Integer>("price"));
col_tax.setCellValueFactory(new PropertyValueFactory<Products, Integer>("tax"));
col_discount.setCellValueFactory(new PropertyValueFactory<Products, Integer>("discount"));
另一件事,table.setItems(prodList)
应该在初始化方法中。更正一下。
我正在尝试使用 setItems 方法填充我的 javafx 应用程序 TableView, 在这样做的同时,我首先定义了我的控制器路径,方法是
fx:"sample.Application"
然后我用 class 名称 "Products" 定义了我的数据模型,其中包含所有必要的构造函数、getter 和 setter。然后我开始编写我的控制器代码,我定义了所有必要的 fx:带有 FXML 注释的 id,我重写了显然没有给出错误的初始化方法,还填充了 TableView 我使用了 ObserverList 并通过使用 observerArrayList 调用了 Products 的构造函数,在最后,当我尝试使用 setItems() 用 fx:id ="table" 填充 TableView 时,出现错误:
table.setItems(prodList);
错误:
Error:(46, 19) java: identifier expected Error:(46, 28) java: identifier expected
代码如下:
FXML CODE:
<TableView fx:id="table" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.halignment="LEFT" GridPane.rowIndex="3" >
<columns>
<TableColumn fx:id="col_id" text="PRODUCT ID"/>
<TableColumn fx:id="col_name" text="NAME"/>
<TableColumn fx:id="col_price" text="PRICE" />
<TableColumn fx:id="col_tax" text="TAX" />
<TableColumn fx:id="col_discount" text="DISCOUNT" />
</columns>
</TableView>
Controller code
public class Application implements Initializable {
@FXML
private TableView<Products> table;
@FXML
private TableColumn<Products, Integer> col_id;
@FXML
private TableColumn<Products, String> col_name;
@FXML
private TableColumn<Products, Integer> col_price;
@FXML
private TableColumn<Products, Integer> col_tax;
@FXML
private TableColumn<Products, Integer> col_discount;
final ObservableList<Products> prodList = FXCollections.observableArrayList(
new Products(11, "Laptop", 25000, 23, 12 )
);
@Override
public void initialize(URL location, ResourceBundle resources) {
col_id.setCellValueFactory(new PropertyValueFactory<>("productId"));
col_name.setCellValueFactory(new PropertyValueFactory<>("name"));
col_price.setCellValueFactory(new PropertyValueFactory<>("price"));
col_tax.setCellValueFactory(new PropertyValueFactory<>("tax"));
col_discount.setCellValueFactory(new PropertyValueFactory<>("discount"));
}
table.setItems(prodList); //error
}
您还没有在初始化方法中设置 属性 值工厂。我认为这是造成问题的原因。
PropertyValueFactory<>
里面什么也没有。您必须按照下面给出的方式进行设置 -
col_id.setCellValueFactory(new PropertyValueFactory<Products, Integer>("productId"));
col_name.setCellValueFactory(new PropertyValueFactory<Products, String>("name"));
col_price.setCellValueFactory(new PropertyValueFactory<Products, Integer>("price"));
col_tax.setCellValueFactory(new PropertyValueFactory<Products, Integer>("tax"));
col_discount.setCellValueFactory(new PropertyValueFactory<Products, Integer>("discount"));
另一件事,table.setItems(prodList)
应该在初始化方法中。更正一下。