当前位置: 首页 > 知识库问答 >
问题:

使用Eclipse处理:关闭草图而不关闭其余窗口?

齐夕
2023-03-14

我正在Eclipse中的一个Java项目中工作,该项目有一个扩展PApplet以运行处理草图的类。

首先,我有一个JFrame登录屏幕,在用户登录后,我调用

PApplet.main("Game"); //"Game" is the class that extends PApplet

开始素描。

现在,当游戏结束时,我想关闭草图窗口,但不是原来的JFrame窗口。

通常我会打电话

exit();

但这会关闭整个应用程序(即所有窗口)。

我也试过了

dispose();

但这没什么用。

我想我在找

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

但对于帕普莱来说。

共有1个答案

袁泓
2023-03-14

首先,您必须获取包含您的草图的实例。这意味着使用runSketch()函数,而不是直接调用main()

Game game = new Game();
String[] args = {};
PApplet.runSketch(args, game);

现在您已经有了对草图实例的引用,您可以使用它来访问内部窗口。如何做到这一点取决于您使用的渲染器,但是您可以使用处理JavaDoc和处理源代码的混合来解决这个问题。

下面是一个使用默认渲染器的未经测试的示例:

PSurface surface = game.getSurface();
SmoothCanvas smoothCanvas = (SmoothCanvas)surface.getNative();
JFrame frame = (JFrame) smoothCanvas.getFrame();

现在有了父窗口,您可以用它做任何事情,包括:

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setVisible(false);

就像我说的,我还没有测试过这段代码,这将取决于您使用的渲染器,但是这个使用源代码和JavaDoc来找出引擎盖下发生了什么来访问底层窗口的过程是您必须做的。

 类似资料:
  • 问题内容: 我试图将我的应用程序中较大且经常使用的部分重构为单独的方法,以使其易于维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了Scanner和System.in,但是当我关闭Scanner时,我也关闭了System.in。 所以我的问题是,我只能通过用CloseShieldInputStream屏蔽System.in来防止System.in关闭,还是应该开始将Scanner传递给方

  • 我试图将应用程序中大量且经常使用的部分重新划分为不同的方法,以使其更容易维护。 其中一些方法要求用户输入并进行输入验证,因此我使用了扫描仪和系统。但当我关闭扫描仪时,我也会关闭系统。在里面 所以我的问题是,我只能阻止系统。通过使用CloseShieldInputStream屏蔽它来关闭,还是我应该开始向方法传递一个扫描器?

  • 问题内容: 最终编辑: 我在关闭pyplot窗口这一主题上发现,实际上可能不应该使用pyplot完成它。SRK给出了一个很好的示例,说明如何处理将在下面的答案中更新的图。我也偶然发现了如何将pyplot图放到Tkinter窗口中,并且Tkinter比pyplot更擅长打开和关闭窗口。这里是怎样把一个pyplot情节变成Tk的窗口, /最终编辑 我希望能够显示多个图,然后能够从某些代码输入中分别关闭

  • 我刚刚花了相当多的时间来寻找pygame的64位安装,以便与Python3.3一起使用(这里),现在我正在尝试创建一个窗口。然而,尽管窗口打开得很好,但当它按下x按钮时并没有关闭。事实上,我必须关闭闲置关闭窗口。我正在运行Win7的64位版本。这是我的密码: 当我附加 它仍然没有关闭。我唯一的猜测就是那个游戏。退出可能会进入其中一个循环,但即使解决了这个问题,我还是更愿意在需要时关闭窗口。

  • 问题内容: 我想同时显示两个(或更多) JFrame 。 当我关闭其中一个(使用默认的关闭按钮)时,其他框架仍应可见。 我怎样才能做到这一点? 问题答案: 如果您 不 希望应用程序在a 关闭时终止,请使用 代替 从文档中: (在WindowConstants中定义):不执行任何操作;要求程序处理注册的WindowListener对象的windowClosing方法中的操作。 (在WindowCon

  • < b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我用lwjgl框架做了一个游戏——它使用opengl窗口来渲染。我想每5秒钟渲染一次,而不停止游戏的更新。有什么方法可以做到这一点,直接用lwjgl还是用opengl?我猜这应该不是非常复杂,但我似乎找不到任何东西。