Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JComboBox弹出菜单恒定高度_Java - Fatal编程技术网

Java JComboBox弹出菜单恒定高度

Java JComboBox弹出菜单恒定高度,java,Java,我有一个JComboBox,编辑器文本框上有一个键侦听器,用于使其可过滤。过滤效果很好,但我在让相应的弹出框始终保持在设置的高度时遇到了一个问题——这个问题只有在通过单击弹出框中的某个项目或在单击某个条目时按enter键显式设置值后才会出现 例如,假设我的组合框有[BOOP,KOOP,JOOP,MOOP,FOOP,DOOP,ROOP,ZOOPS]值,我输入了“OOPS”。此时,只有值“ZOOPS”将显示在弹出窗口中,但其大小仍然足够大,可以容纳所有其他值,而无需滚动 然而,一旦我明确选择了“ZO

我有一个JComboBox,编辑器文本框上有一个键侦听器,用于使其可过滤。过滤效果很好,但我在让相应的弹出框始终保持在设置的高度时遇到了一个问题——这个问题只有在通过单击弹出框中的某个项目或在单击某个条目时按enter键显式设置值后才会出现

例如,假设我的组合框有[BOOP,KOOP,JOOP,MOOP,FOOP,DOOP,ROOP,ZOOPS]值,我输入了“OOPS”。此时,只有值“ZOOPS”将显示在弹出窗口中,但其大小仍然足够大,可以容纳所有其他值,而无需滚动

然而,一旦我明确选择了“ZOOPS”,如果我在编辑器文本框上单击后退并删除“S”,这样只剩下“OOP”,所有条目都会正确地添加回来,但是弹出窗口的大小现在只足以显示一个带有小滚动条的条目,用于导航到其他条目。奇怪的是,如果我在这一点上按escape键,弹出窗口会自动更正并再次显示所有项目

我已尝试使用以下工具手动设置弹出框的高度:

Dimension size = new Dimension(comboBox.getWidth(), 146);
JPopupMenu popupMenu = (JPopupMenu) comboBox.getUI().getAccessibleChild(comboBox, 0);
popupMenu.setPopupSize(size);
然而,这似乎只是设置了实际弹出菜单包含的任何边界组件的大小——它会产生一个透明的框,大小与我想要的一样,但实际弹出菜单仍然只能容纳单个项目


我试过setSize,setMinimumSize,setMaximumSize——都没用。关于我在这里遗漏了什么,有什么线索吗?

如果你能创建并发布一个。另一方面,在这种情况下,避免使用KeyListener几乎总是更好的。最好是过滤文档或收听文档。设置弹出窗口的大小绝对是一件痛苦的事情。。。内裤