2016-09-08 97 views
0

我有一个combobox.it有类别name.so我需要将字符串传递给类别。 类别category =(Category)cmbCategory.getSelectedItem();此行得到错误提示着投串类别类型..java.lang.ClassCastException:java.lang.String不能转换为类别类型

private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    double amount = Double.parseDouble(txtAmount.getText()); 
    Expense expense = new Expense(); 
    expense.setReason(txtReason.getText()); 
    expense.setAmount(amount); 
    DateFormat format = new SimpleDateFormat("MMMM d, yyyy"); 

    Category category = (Category)cmbCategory.getSelectedItem(); 
    String startDate = ((JTextField)txtDate.getDateEditor().getUiComponent()).getText(); 

    try { 
     Date date = format.parse(startDate); 
     expense.setDate(date); 
    } catch (ParseException ex) { 
     Logger.getLogger(ExpenseView.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    expense.setCategory(category); 
    ExpenseController.saveExpense(expense); 
}   
+0

是'cmbCategory.getSelectedItem()的类型;'字符串? –

+0

yes.i将它作为字符串传递 – Dise

+1

那么这就是你的问题。你正在试图告诉编译器'getSelectedItem()'会给你一个'Category'的Category或Category,'String'不是。 – Orin

回答

1

看起来您正在尝试转换,然后将String指定给Category

由于String显然不是Category,也没有实施Category,您会收到此异常。

您可以添加Category类的字符串数据成员,如categoryName然后将其设置如下:

Category category = new Category().setCategoryName(cmbCategory.getSelectedItem()); 
+0

感谢您的帮助。出现bcz我试图将一个对象的实例转换为它不是的类型。现在它可以 – Dise

+0

很高兴听到,接受答案为未来的人看这个问题:) –

+0

我传递类对象comboadditem方法cmbCategory.addItem(类);。错误solve.but当我运行并看着组合框它消失name.i知道问题是我通过类object.but类别对象有名称和id.how我可以在组合显示名称。 – Dise

1

Category.getSelectedItem();返回String

,除非它被分配给你的类目录,例如名称的属性,其类型为字符串的

category.setName(cmbCategory.getSelectedItem()); 
+0

感谢您的帮助。发生bcz我试图将一个对象的实例转换为它不是的类型。现在它可以 – Dise

相关问题