Swing/ComboPopupWidth のバックアップ(No.12)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ComboPopupWidth へ行く。
- 1 (2007-10-07 (日) 17:21:14)
- 2 (2008-03-14 (金) 17:37:27)
- 3 (2008-03-21 (金) 19:19:37)
- 4 (2011-06-05 (日) 02:34:16)
- 5 (2013-01-31 (木) 22:59:33)
- 6 (2013-08-01 (木) 14:05:32)
- 7 (2013-09-08 (日) 02:35:09)
- 8 (2014-06-03 (火) 19:03:51)
- 9 (2014-10-28 (火) 03:15:51)
- 10 (2014-10-31 (金) 01:52:03)
- 11 (2014-11-01 (土) 00:46:09)
- 12 (2014-11-25 (火) 03:03:31)
- 13 (2015-11-24 (火) 03:03:46)
- 14 (2016-05-27 (金) 13:08:33)
- 15 (2016-09-15 (木) 16:30:26)
- 16 (2017-06-14 (水) 18:17:10)
- 17 (2017-11-02 (木) 15:34:40)
- 18 (2018-06-06 (水) 20:34:19)
- 19 (2020-05-27 (水) 02:45:35)
- 20 (2021-11-14 (日) 03:50:25)
- 21 (2022-08-20 (土) 22:15:25)
- title: JComboBoxのドロップダウンリスト幅を指定値以上に保つ tags: [JComboBox, PopupMenuListener] author: aterai pubdate: 2007-09-10 description: JComboBoxのドロップダウンリストが表示されたとき、本体の幅が狭くても一定の幅以下にはならないように設定します。
概要
JComboBox
のドロップダウンリストが表示されたとき、本体の幅が狭くても一定の幅以下にはならないように設定します。
Screenshot
Advertisement
サンプルコード
class MinWidthPopupMenuListener implements PopupMenuListener {
private static final int POPUP_MIN_WIDTH = 320;
private boolean adjusting = false;
@Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
JComboBox combo = (JComboBox) e.getSource();
Dimension size = combo.getSize();
if (size.width >= POPUP_MIN_WIDTH) return;
if (!adjusting) {
adjusting = true;
combo.setSize(POPUP_MIN_WIDTH, size.height);
combo.showPopup();
}
combo.setSize(size);
adjusting = false;
}
@Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
@Override public void popupMenuCanceled(PopupMenuEvent e) {}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、下二つのJComboBox
にPopupMenuListener
を実装したリスナーを設定しています。このリスナーでは、ポップアップメニュー(ドロップダウンリスト)が開かれる前にJComboBox
本体の幅を指定値と比較し、小さかった場合は以下のような通常とは異なる手順でポップアップメニューの表示を行っています。
JComboBox
のサイズを取得し保存JComboBox
の幅を指定値まで拡大JComboBox#showPopup
でポップアップメニューを表示- ポップアップメニューの幅も、指定値まで拡大している
JComboBox
本体のサイズを保存していた元の値に戻す
参考リンク
- Swing - How to widen the drop-down list in a JComboBox
- dlinderm さんの投稿(2007/06/08 23:24)を参考にして、
PopupMenuListener
を使用しています。
- dlinderm さんの投稿(2007/06/08 23:24)を参考にして、
- Make JComboBox popup wide enough - Santhosh Kumar's Weblog
- こちらには、
JComboBox#doLayout()
と、JComboBox#getSize()
をオーバーライドして、十分な幅のドロップダウンリストを表示するサンプルがあります。
- こちらには、