データを単純なクラスにラップします。
class MyData {
int value;
String text;
...
}
BasicComboBoxRenderer を拡張して、独自のレンダラーを記述できるようになりました。「値」を「MyData」にキャストし、テキストをレンダリングします。
public class Bla extends BasicComboBoxRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if(value instanceof MyData) {
setText(((MyData) value).getText());
}
return super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
}
}
Java7 を使用する場合は、@Taiki が示したようなジェネリックを使用することをお勧めします。これで、jc.getSelectedItem() によって選択されたオブジェクトを取得できます。常に MyData 型からのもので、テキスト ("a"、"b" など) と値 (1、2、3 など) にアクセスできます。