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

概要

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

サンプルコード

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 in GitHub: Java, Kotlin

解説

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

コメント