我正在尝试创建JavaFX程序来管理生产线。我正在使用数据库,以便用户可以使用TextField
和ChoiceBox
填充数据库。我在从我创建的Enum类中填充ChoiceBox
时遇到问题。
预计我的ChoiceBox
将填充我的Enum
类中的项目,但是ChoiceBox
保持空白。代码正在编译。
在您将我引荐至this link之前,我已经尝试使用该讨论中的建议,但是我无法全神贯注于此。该讨论无济于事,因为我不确定他们在哪里尝试填充其ComboBox
。另外,cbxStatus.getItems().setAll(Status.values());
对我不起作用(我可能未正确应用它)。
我的Enum类:
package sample;
public enum ItemType {
AUDIO("AU"),
VISUAL("VI"),
AUDIOMOBILE("AM"),
VISUALMOBILE("VM");
final String itemType;
ItemType(String itemType) {
this.itemType = itemType;
}
public String getItemType() {
return itemType;
}
}
我的控制器类:
package sample;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;
import java.sql.SQLException;
public class Controller {
@FXML
private TextField productName;
@FXML
private TextField productManufacturer;
@FXML
private ChoiceBox<ItemType> itemType = new ChoiceBox<>();
private DatabaseManager databaseManager = new DatabaseManager();
public Controller() throws SQLException {
}
@FXML
public void initialize() {
itemType.getItems().setAll(ItemType.values());
}
public void addProduct() {
String name = productName.getText();
String manufacturer = productManufacturer.getText();
String type = itemType.toString();
databaseManager.insert(type, manufacturer, name);
System.out.println("Button Pressed");
}
public void recordProduction(ActionEvent actionEvent) {
System.out.println("Button Pressed");
}
}
最后,一旦
ChoiceBox
被填充,我需要捕获用户的选择以输入到我的数据库中。类似于String type = itemType.toString();
。 最佳答案
我认为您缺少明显之处,而在思考新事物,Enum
是问题所在。
@FXML
private ChoiceBox<ItemType> itemType = new ChoiceBox<>();
控制器的字段可以访问一个ChoiceBox实例,而表单上的一个实例则是另一实例。您从未将项目添加到与之交互的选择框中。