如何使用 keyListener 关闭 jframe
我正在用java编写一个简单的幻灯片程序。在该程序中,我想在新窗口中像 powerpoint 一样显示我的幻灯片。
我有具有单例模式的主 gui,因此,我在 MainGUI 中创建 SlideShowGUI,
SlideShowGUI 与此代码非常相似,
我使用以下代码更改了 createAndShowGUI() 方法,以删除标题栏并将其最大化,就像 powerpoint 幻灯片模式一样
public static void createAndShowGUI() {
JFrame frame = new JFrame("BorderLayoutDemo");
frame.addKeyListener(key);
addComponentsToPane(frame.getContentPane());
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
}
在 MainGUI 中我有按钮,在 ButtonHandler 中我执行此操作代码:
ChakmaSystem.getInstance().getGui().getSlideShowGUI().createAndShowGUI();
其中ChakmaSystem.getInstance().getGui()返回MainGUI,getSlideShowGUI()是SlideShowGUI的getter方法。
在 SlideShowGUI 中,我添加了自己的 KeyListener,它跟踪左右按钮和退出按钮。左右工作正常,但是,我希望退出按钮仅关闭我的 SlideShowGUI 窗口。
为此,在我的按键侦听器中,我编写了以下代码:
// Escape Case
else if(keyCode == 27){
ChakmaSystem.getInstance().getGui().getSlideShowGUI().dispose();
}
我知道,当我按转义键时,它会遇到这种情况,但是窗口不会关闭。
我应该怎么办 ?
谢谢。
I'm writing a simple slide program in java. In that program I want to show my slides like powerpoint in a new window.
I have main gui which has singleton pattern, hence, I am creating my SlideShowGUI in my MainGUI,
SlideShowGUI is very similar to this code, http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/BorderLayoutDemoProject/src/layout/BorderLayoutDemo.java
I changed the createAndShowGUI() method with the following code, to remove title bar and maximize it like powerpoint slideshow mode
public static void createAndShowGUI() {
JFrame frame = new JFrame("BorderLayoutDemo");
frame.addKeyListener(key);
addComponentsToPane(frame.getContentPane());
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
}
In MainGUI I have buttons, and in ButtonHandler I execute this code:
ChakmaSystem.getInstance().getGui().getSlideShowGUI().createAndShowGUI();
Where ChakmaSystem.getInstance().getGui() returns the MainGUI, and getSlideShowGUI() is the getter method of the SlideShowGUI.
In SlideShowGUI, I added my own KeyListener, which keeps track of left right and escape buttons. Left and right work properly, however, I want escape button to close only my SlideShowGUI window.
To do that, in my keylistener I wrote the following codes:
// Escape Case
else if(keyCode == 27){
ChakmaSystem.getInstance().getGui().getSlideShowGUI().dispose();
}
I know that, when I press the escape it hits this case, however windows does not close.
What should I do ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于那些仍在寻找这个的人来说 - 我关闭程序的方式非常非常简单:
希望这会有所帮助。
Just for people who are still looking for this - the way I close my programs is very, very simple:
Hope this helps.
这有效吗?
Does this work?