我正在尝试实现类似于此处找到的样式的搜索结果弹出列表:

http://www.inquisitorx.com/

(我并不是要实施Google搜索,我只是将其用作我正在使用的样式的粗略示例。)

无论如何,我都是通过使用JList中包含的JPopupMenu来实现此目的的,该JTextField弹出在pack下面。

当用户输入搜索词时,列表将更改以反映不同的匹配结果。然后,我在JPopupMenu上调用getPopup调整其大小。
但这有效,但是由于它实际上隐藏了弹出窗口并显示了弹出窗口,因此会产生轻微的闪烁效果。 (请参阅JPopupMenu中的私有方法JWindow明确执行此操作。)

有什么方法可以让它调整大小(除了使用之外)?

最佳答案

您尝试过setSize()吗?看起来是在JComponent中处理过的,并且可以避免重涂问题。

我认为getPopup解决的问题是当弹出窗口的尺寸不适合窗口时该怎么办。发生这种情况时,它会从轻量级组件降落到重量级组件,这肯定需要隐藏起来。因此,我认为如果可以保证弹出窗口不会超出窗口范围,则setSize可能会成功。

10-08 13:04