java - 我无法将组合框的值传递给对象。错误是“不兼容的类型:对象无法转换为大小”
问题描述
我的项目中有一堆枚举,我将它们用于组合框中的值,但是当我将这些值传递给我的“披萨”类时,它给了我错误。
public class Pizza {
private Size size;
private Crust crust;
private Sauce sauce;
private Topping topping1;
private Topping topping2;
public Pizza(Size size,Crust crust, Sauce sauce,
Topping topping1,Topping topping2){
this.size=size;
this.crust=crust;
this.sauce=sauce;
this.topping1=topping1;
this.topping2=topping2;
}
//blah blah
------------------------------------------
//This is one of my enums.
public enum Size {
SMALL(9.45),MEDIUM(11.87),LARGE(15.9);
private double size;
Size(double size){this.size=size;}
public double getSize(){return this.size;}
public String getSizeAsString(){return String.valueOf(size);}
}
-------------------------------------------
public class PizzaForm extends javax.swing.JFrame {
public PizzaForm() {
initComponents();
initiateComboBoxes();
}
public void initiateComboBoxes(){
cboSize.setModel(new DefaultComboBoxModel<>(Size.values()));
}
---------------------------------------------
private void btnAddToOrderActionPerformed(java.awt.event.ActionEvent evt) {
//when button clicked..
Pizza pizza=new Pizza(cboSize.getSelectedItem(),cboCrust.getSelectedItem(),cboSauce.getSelectedItem(),cboTopping1.getSelectedItem(),cboTopping2.getSelectedItem());
}
错误在倒数第二行。它突出显示了我的整行错误。谁能告诉我可能是什么问题?我没有将任何东西转换为“大小”,所以我不知道问题是什么。谢谢你
解决方案
JComboBox#getSelectedItem()
不是“泛化”的,所以只知道返回原始对象类型。您需要将此方法返回的对象转换为适当的类型,例如在本例中为大小。
所以:
Pizza pizza = new Pizza((Size) cboSize.getSelectedItem(),
(Crust) cboCrust.getSelectedItem(),
(Sauce) cboSauce.getSelectedItem(),
(Topping) cboTopping1.getSelectedItem(),
(Topping) cboTopping2.getSelectedItem());
推荐阅读
- php - 自动配置替换导入的服务
- sql - 当生成选择语句时,它给我奇怪的文本作为 > 选择数据时?
- okhttp - okhttp 支持 http2 中的连接池
- c# - 如何从 swagger.json 中删除反引号
- python - PermissionError:[Errno 13] 权限被拒绝:'/var/www/FlaskApp/FlaskApp/conversationLogs/42779251.json'
- clojure - 递归函数性能不佳
- excel - 如何按代号设置工作表以传递给 UDF?
- python-3.x - Python日志记录未写入日志
- react-native - 如何修复冲突的下拉刷新手势和在 ReactNative 中向下滚动?
- reactjs - React:使用 useEffect 和 gettting .map 获取数据不是函数