2016-09-08 94 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

相關問題