我有这个GUI应用程序,我想在用户打开应用程序时,在显示GUI之后立即执行自定义操作。
所以,我将对该动作的调用放入JFrame的public Main()
中,如下所示:
public Main() {
initComponents();
ExecuteAfter();
}
其中ExecuteAfter()
是包含要执行的操作或操作的方法。
这很好,但不是我想要的方式。这样,在显示JFrame
之前,即在应用程序窗口出现在屏幕之前,动作始终执行。我想要的是仅在显示JFrame
之后执行操作,即在应用程序窗口出现在屏幕上之后。
我尝试将调用放入public static void main(String args[])
,因为创建并显示JFrame
的位置。但是不起作用,因为该方法不是静态的,我不能把静态的方法放在那里,因为它使用了已经由IDE初始化为非静态的JFrame
的一些组件。
所以,问题是:我需要在屏幕上显示JFrame
后执行操作调用吗?或者还有其他方法吗?
提前致谢!
答案 0 :(得分:1)
我使用WindowListener
并解决了问题。
我没有将调用放在构造函数public Main()
或主public static void main(String args[])
中,而是无法完成,我配置了WindowsListener
来进行调用。像那样:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
ExecuteAfter();
}
以我想要的方式完美运作。
感谢@MadProgrammer提供的建议。
答案 1 :(得分:0)
如果我理解你的问题,我会对我的项目使用类似的案例。我需要在JFrame显示时启动计时器,所以这就是我这样做的方式。
所以我使用2个方法和1个构造函数。第一种方法(exp。名称:准备GUI),在这里你可以添加所有认为你需要创建JFrame,JPanel ....以及我在构造函数中调用的方法。在第二种方法(exp.Name:start GUI)中,您将所有组件添加到JPanel / s,JPanel / s添加到JFrame,并设置JFrame visible =(true),然后添加您的方法ExecuteAfter()。您需要在main方法中调用的第二种方法(准备GUI)。我希望这会对你有所帮助。