ComboBoxのgetSelectedItem()がStringを返す

338 views
Skip to first unread message

tarchan

unread,
Mar 12, 2013, 3:27:37 AM3/12/13
to java...@googlegroups.com
こんにちは、tarchanです。

次のように独自のクラス Item を返すコンボボックスを定義したとき、

@FXML private ComboBox<MyItem> combobox;

選択された項目を取得しようとすると、次のコードは実行時例外を起こします。

MyItem item = combobox.getSelectionModel().getSelectedItem();

例外:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to XXX$MyItem

次のコードで確認してみるとStringを返していることがわかりました。
これって既知のバグでしょうか?

Object item = combobox.getSelectionModel().getSelectedItem();
item.getClasss().getName();


Yuichi Sakuraba

unread,
Mar 12, 2013, 3:38:51 AM3/12/13
to Japan JavaFX User Group
こんにちは、tarchan。櫻庭です。

> 次のコードで確認してみるとStringを返していることがわかりました。
> これって既知のバグでしょうか?

これはバグじゃないそうです。

ComboBoxのJavadocにはこう書いてあります。

If a different type is specified and the ComboBox is to be editable,
it is necessary to specify a customStringConverter.

ようするに文字列に変換するStringConverterを作らなくてはいけない
ということのようです。

いちおう、JIRAにも登録されてますけど、バグじゃないとなっています。

RT-20481 ComboBox<Integer> causes ClasscastException
http://javafx-jira.kenai.com/browse/RT-20481


2013年3月12日 16:27 tarchan <tar...@gmail.com>:
> --
> このメールは Google グループのグループ「Japan JavaFX User Group」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、javafx-ja+...@googlegroups.com にメールを送信します。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>

tarchan

unread,
Mar 12, 2013, 10:27:04 PM3/12/13
to java...@googlegroups.com
櫻庭さん

こんにちは、tarchanです。

StringConverter<MyItem>を追加することで期待通りのオブジェクトを取得できるようになりました。
StringConverterを追加しなくても一見動作するように見えるのでハマッてしまいました。
Javadocを確認しないとだめですね。
ありがとうございました。


2013年3月12日火曜日 16時38分51秒 UTC+9 Yuichi Sakuraba:
> このグループから退会し、メールの受信を停止するには、javafx-ja+unsubscribe@googlegroups.com にメールを送信します。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>
Reply all
Reply to author
Forward
0 new messages