如何更改 jcombobox 中 jpopupmenu 的高度?

How to change height of a jpopupmenu in a jcombobox?

我正在开发一个应用程序,在该应用程序中,我通过可编辑的 'JComboBox' 处理按键释放事件,其中在每次按键释放时都会出现 'JComboBox' 的 'JPopupMenu'。我想增加高度,以便用户无需滚动即可一目了然地看到更多项目。 任何人都可以演示如何故意设置 'JPopupMenu' 的高度,以便显示大量项目吗? 到目前为止我已经尝试过了,但它不起作用。

combo.getComponentPopupMenu().setSize(10, 10);

尝试以下操作:

ComboPopup popup = (ComboPopup) combo.getUI().getAccessibleChild(combo, 0);
((JComponent) popup).setPreferredSize(size);
((JComponent) popup).setLayout(new GridLayout(1, 1));

很高兴看到你的SSCCE,这样我就可以测试我的建议是否有效。

一种更简洁的方法,仅使用 public API(并且没有 hack)是:

  • 设置 JComboBox 及其布局的宽度(方法 setLayout 在其父级上)- 这也将设置 JPopupMenu 的宽度
  • 设置 JPopupMenu 的高度 JComboBox.setMaximumRowCount