Java 让窗口跟踪组件在屏幕上的位置

Java 让窗口跟踪组件在屏幕上的位置,java,swing,Java,Swing,在JavaSwing中,我希望在组件旁边显示一个窗口,这样它就会浮在GUI的顶部。但我需要它始终保持在特定组件的旁边,无论它移动到哪里,无论用户是否移动窗口、滚动组件所在的滚动窗格、调整大小等等。有没有一种简单的方法可以做到这一点 我已经知道如何让它出现在正确的地方开始。因此,例如,如果某个组件在屏幕上的位置发生变化时,会触发某个事件,则该事件将起作用。请查看 您必须考虑组件的大小以及窗口可能在当前屏幕边界之外打开的可能性,但是让我们从小步骤开始看看 您必须考虑组件的大小以及窗口可能在当前屏幕边

在JavaSwing中,我希望在组件旁边显示一个窗口,这样它就会浮在GUI的顶部。但我需要它始终保持在特定组件的旁边,无论它移动到哪里,无论用户是否移动窗口、滚动组件所在的滚动窗格、调整大小等等。有没有一种简单的方法可以做到这一点

我已经知道如何让它出现在正确的地方开始。因此,例如,如果某个组件在屏幕上的位置发生变化时,会触发某个事件,则该事件将起作用。

请查看

您必须考虑组件的大小以及窗口可能在当前屏幕边界之外打开的可能性,但是让我们从小步骤开始看看


您必须考虑组件的大小以及窗口可能在当前屏幕边界之外打开的可能性,但是让我们从小步骤开始,我想我找到了它。当滚动条移动、窗口移动或调整大小时,java.awt.Component.addHierarchyBoundsListener会触发事件。我想那会满足我的需要。

我想我找到了。当滚动条移动、窗口移动或调整大小时,java.awt.Component.addHierarchyBoundsListener会触发事件。我想这会满足我的需要。

我会补充一个问题:我知道如何让它首先出现在那里。这是一个挑战。我能想到的最好的解决方案是搜索父窗口的引用。SwingUtilities有一些方法可以做到这一点,并使用计时器监视器之类的东西进行更改。我必须做一些探索,但是当位置被修改时,我不会触发windows属性更改事件。不仅仅是窗口,我还必须在每个容器上注册调整大小、移动和滚动事件,从组件到窗口的整个层次结构。这真的很混乱,这就是为什么我问是否有一个简单的方法来做这件事。不,不是一个简单的方法。您将需要监视组件的大小/位置更改,监视组件的父级的大小/位置更改,监视内容窗格和窗口的某些方式…事实上,您可能需要监视整个组件层次结构,一直监视到窗口。我将补充一个问题:我知道如何让它显示在那里。这是一个挑战。我能想到的最好的解决方案是搜索父窗口的引用。SwingUtilities有一些方法可以做到这一点,并使用计时器监视器之类的东西进行更改。我必须做一些探索,但是当位置被修改时,我不会触发windows属性更改事件。不仅仅是窗口,我还必须在每个容器上注册调整大小、移动和滚动事件,从组件到窗口的整个层次结构。这真的很混乱,这就是为什么我问是否有一个简单的方法来做这件事。不,不是一个简单的方法。您将需要监视组件的大小/位置更改、组件的父级的大小/位置更改、内容窗格和窗口……事实上,您可能需要监视整个组件层次结构,直到窗口