组合框的网格选择弹出窗口

Grid selection popup for combo box

我有一个 JComboBox 可以让你 select 个人资料图片 - 各种图库。

我当前组合框的图像:

如果我添加更多图片,您已经知道这将是多么笨拙。

基本上,我想用基于网格的弹出窗口“替换”弹出窗口,以便更轻松地select图像。
但是,我想保留组合框本身的外观 - 显示有关当前 selected 图像的详细信息。

目前我能看到的唯一方法是使用自定义外观 UI class,AFAIK 会使组合框看起来不合适,因为我的应用程序的其余部分使用系统 L&F。

组合框的弹出窗口使用JList来显示项目。

您可以将 JList 配置为使用水平换行:

BasicComboPopup popup = (BasicComboPopup)comboBox.getAccessibleContext().getAccessibleChild(0);
JScrollPane scrollPane = (JScrollPane)popup.getComponent(0);
JList list = (JList) scrollPane.getViewport().getView();
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(2);

阅读 Initializing a List 上的 Swing 教程部分了解更多信息。