2016-09-08 7 views
0

私はcombobox.itにcategory name.soがあります。これはカテゴリにstringを渡す必要があります。 カテゴリ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'またはサブクラスを与えようとしていることをコンパイラに伝えようとしていますが、 'String'はそうではありません。 – Orin

答えて

1

変換しようとしていて、StringCategoryに割り当てているようです。

Stringは明らかにCategoryではないため、Categoryを実装していないため、この例外が発生します。

あなたのCategoryクラスcategoryNameなどの文字列データメンバを追加し、次のようにそれを設定することができます。

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

help.it occured bczのおかげで、私はそれがない型にオブジェクトのインスタンスをキャストしようとしていた。今それは大丈夫 – Dise

+0

聞いてうれしい、この質問を見て将来の人々のための答えを受け入れる:) –

+0

私が実行し、それが消えるコンボボックスを見ると、エラー解決されました。 name.i問題は私がカテゴリobject.butカテゴリオブジェクトを渡したことを知っている名前とid.how私はコンボで名前を表示することができます。 – Dise

1

Category.getSelectedItem();String

を返し、それは、例えば名のクラスカテゴリの属性に割り当てられ、文字列型であるされていない限り

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

help.it occured bczありがとう、私はオブジェクトのインスタンスをそれがない型にキャストしようとしていました。今それは大丈夫 – Dise

関連する問題