量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

独自の ListCellRenderer を使って JComboBox に空の要素を表示。

スポンサーリンク

単純に以下のようにやればできるもんだと思ってました。

public class MyListCellRenderer implements ListCellRenderer {
    /** RendererComponent */
    private JLabel label = new JLabel();


    @Override
    public Component getListCellRendererComponent(JList jlist, Object obj, int i, boolean flag, boolean flag1) {
         :
        label.setText("");
         :
        return this;
    }
}



でもこれだと表示されません。
JLabel$AccessibleJLabel#getTextRectangle() メソッドの実装を追っていけば何となく分かりますが、null または空文字が設定されていると高さを 0 にしてるようです。


なので、

        label.setText("");

        label.setText(" ");

に変えれば、空の要素を表示することができます。