Java 如何在不退出应用程序的情况下关闭基于JPanel上事件的特定JFrame?
如何在不退出整个应用程序的情况下,基于特定帧内JPanel上的模拟退出特定帧 在我的主类中,我有一个Frame()方法 在我的FightScene类中,我绘制了一个FightScene,该类还有checkCollision()方法Java 如何在不退出应用程序的情况下关闭基于JPanel上事件的特定JFrame?,java,swing,jframe,jpanel,multiple-instances,Java,Swing,Jframe,Jpanel,Multiple Instances,如何在不退出整个应用程序的情况下,基于特定帧内JPanel上的模拟退出特定帧 在我的主类中,我有一个Frame()方法 在我的FightScene类中,我绘制了一个FightScene,该类还有checkCollision()方法 public void checkCollisions(){ 对于(int i=0;i
public void checkCollisions(){
对于(int i=0;i
现在要关闭框架,只需执行以下操作:
frame.dispose();//close the `JFrame` instance
更新:
我明白,但我如何使用fightsecene()
(这是
a(JPanel)
通过构造函数或setter将JFrame
的实例传递给JPanel
或
如果不想在JPanel
类/方法中使用实例,请执行以下操作:
JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(this);
frame.dispose();
((Frame)FightScene.this.GetToLevel()).dispose();
//FightScene是JPanel没有定义有关的内容,那么HIDE_ON_CLOSE是默认的关闭操作==setVisible(false),我不会在关闭或添加WindowListener时做任何可以防止…的事情。谢谢,这正是我想要的。非常感谢appreciated@user2556304那么,您使用的是计时器还是线程?如果是,则必须停止,否则它将继续,或者让线程/计时器成为观察者,即它查看JFrame
是否可见当然,现在您必须确保JFrame
在计时器启动时可见…比传递帧的实例更干净:gettoplevelancer().setVisible(false)你的心理Bro,我忘记了关于TimeRee的欢迎,欢迎加入StAdvExcel。考虑添加更多的解释。
JFrame frame=new JFrame();//create frame
//so when we exit or dispose of Jframe it doesnt exit the entire app
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
...
frame.pack();
frame.setVisible(true);
frame.dispose();//close the `JFrame` instance
JFrame frame = (JFrame) SwingUtilities.getWindowAncestor(this);
frame.dispose();