我在编辑器文本框中有一个带有键监听器的JComboBox,用于使其可过滤。过滤工作正常,但是我在使相应的弹出框始终保持在设定高度时遇到问题 - 只有在通过单击弹出窗口中的项目明确设置了值之后才会出现此问题。当一个条目被高亮时击中进入。
例如,假设我的组合框具有值[BOOP,KOOP,JOOP,MOOP,FOOP,DOOP,ROOP,ZOOPS]并且我输入了“OOPS'”。那时,只有价值' ZOOPS'将显示在弹出窗口中,但其大小仍然足够大,以容纳所有其他值而无需滚动。
但是,一旦我明确选择了ZOOPS',如果我再单击编辑器文本框并删除' S'所以只有' OOP'仍然,所有条目都正确地重新添加,但弹出窗口的大小现在只有足够大,以显示一侧带有微小滚动条的单个项目,用于导航到其他条目。奇怪的是,如果我在此时点击了转义键,弹出窗口会自行更正并再次显示所有项目。
我已尝试使用以下方法手动设置弹出框的高度:
Dimension size = new Dimension(comboBox.getWidth(), 146);
JPopupMenu popupMenu = (JPopupMenu) comboBox.getUI().getAccessibleChild(comboBox, 0);
popupMenu.setPopupSize(size);
然而,这似乎只设置实际弹出菜单所包含的任何边界组件的大小 - 它会产生一个我想要的透明框,但实际的弹出菜单仍然只有一个项目足够大
我尝试了setSize(),setMinimumSize(),setMaximumSize() - 都无济于事。关于我在这里失踪的任何线索?