• title: JComboBoxの高さを変更する tags: [JComboBox, ListCellRenderer] author: aterai pubdate: 2009-03-02T12:37:58+09:00 description: JComboBox自体の高さや、ドロップダウンリスト内にあるアイテムの高さを変更します。

概要

JComboBox自体の高さや、ドロップダウンリスト内にあるアイテムの高さを変更します。

スクリーンショット

ComboItemHeight.png

サンプルコード

JComboBox combo1 = new JComboBox(items);
JLabel renderer1 = (JLabel)combo1.getRenderer();
renderer1.setPreferredSize(new Dimension(0, 32));

JComboBox combo2 = new JComboBox(items);
final ListCellRenderer r = combo2.getRenderer();
final Dimension dim = ((JLabel)r).getPreferredSize();
combo2.setRenderer(new ListCellRenderer() {
  @Override public Component getListCellRendererComponent(
        JList list, Object value, int index,
        boolean isSelected, boolean cellHasFocus) {
    Component c = r.getListCellRendererComponent(
      list, value, index, isSelected, cellHasFocus);
    c.setPreferredSize(new Dimension(100, (index<0)?dim.height:32));
    return c;
  }
});
view all

解説

    • レンダラーにsetPreferredSizeで高さを設定しています。
    • レンダラーのgetListCellRendererComponentで、index0以上の時だけ、高さを変更しています。

コメント