我正在尝试实现类似于此处找到的样式的搜索结果弹出列表:
http://www.inquisitorx.com/
(我并不是要实施Google搜索,我只是将其用作我正在使用的样式的粗略示例。)
无论如何,我都是通过使用JList
中包含的JPopupMenu
来实现此目的的,该JTextField
弹出在pack
下面。
当用户输入搜索词时,列表将更改以反映不同的匹配结果。然后,我在JPopupMenu
上调用getPopup
调整其大小。
但这有效,但是由于它实际上隐藏了弹出窗口并显示了弹出窗口,因此会产生轻微的闪烁效果。 (请参阅JPopupMenu
中的私有方法JWindow
明确执行此操作。)
有什么方法可以让它调整大小(除了使用之外)?
最佳答案
您尝试过setSize()
吗?看起来是在JComponent
中处理过的,并且可以避免重涂问题。
我认为getPopup
解决的问题是当弹出窗口的尺寸不适合窗口时该怎么办。发生这种情况时,它会从轻量级组件降落到重量级组件,这肯定需要隐藏起来。因此,我认为如果可以保证弹出窗口不会超出窗口范围,则setSize可能会成功。