可以使用什么Java Swing事件来了解应用程序何时启动?

Arn*_*nce 6 java swing

我正在寻找一个地方来挂钩一些代码,以便在应用程序加载完成后以编程方式创建,调整JPanel的大小和位置.

我刚开始使用Java.我正在使用带有jdk1.6.0_13的NetBeans 6.5.1.我已经使用新项目向导来创建基本的Java/Swing桌面应用程序.这是一个SingleFrameApplication,它使用带有中央主JPanel的FrameView,其中放置了所有UI元素.

我首先在FrameView构造函数中尝试了我的代码但是当我尝试根据我添加到UI中的一个设计时控件的边界矩形来安排我的JPanel时,该控件还没有完成定位和调整大小所以我得到了全部为坐标的零.

我已经验证了我的代码按照预期通过在应用程序加载后从单击事件中调用它来工作,所以我的问题是找到一种方法来了解何时完成所有内容的大小和排列.

我还尝试了来自主JPanel的componentShown事件,但后来我读到只有在显式调用setVisible时才会触发,这在正常的应用程序启动过程中显然不会发生.

任何人都可以提供一些指示吗?谢谢.

更新:

除了我在下面的答案中提到的,我还阅读了Application.ready()方法.这也是知道应用程序的UI部分何时完成它需要做的所有事情的兴趣点.从应用程序传达我的观点似乎有点混乱.

Arn*_*nce 5

我采用的解决方案实际上是 Charles Marin 和 JRL 的答案的组合(我对您的两个答案都表示赞赏,谢谢)。

我让我的 FrameView 类实现了 WindowListener。

...
public class MyView extends FrameView implements WindowListener
...
Run Code Online (Sandbox Code Playgroud)

在我的 FrameView 构造函数中,我向应用程序的主框架添加了一个侦听器。

...
getFrame().addWindowListener((WindowListener) this);
...
Run Code Online (Sandbox Code Playgroud)

然后在我的 windowActivated 实现中,我可以调用我必须根据其他控件的位置和大小在主 JPanel 上排列和调整控件大小的代码。

public void windowActivated(WindowEvent e)
{
    // The application should now be finished doing its startup stuff.
    // Position and size a control based on other UI controls here
}
Run Code Online (Sandbox Code Playgroud)