我不确定您为什么同时调用这两种方法
getInstance().setExtendedState(Jframe.ICONIFIED); getInstance().setExtendedState(Jframe.NORMAL);
但是如果您删除第一个,即简单地:
getInstance().setExtendedState(Jframe.NORMAL);
那么它只打开一次窗口,没有您描述的无限循环。
您的代码导致无限循环的原因是,它使框架最小化然后再最小化,这导致
windowActivated方法运行:这调用
refresh方法,后者又调用
bringToFront方法,使框架最小化和最小化等。
实际将窗口置于最前面,基于这个问题,以下内容对我有用:
private static void bringToFront() { getInstance().setVisible(true);getInstance().setExtendedState(Jframe.NORMAL); getInstance().toFront(); getInstance().repaint(); }


