如何使用 keyListener 关闭 jframe

发布于 2024-12-23 16:36:33 字数 1135 浏览 2 评论 0原文

我正在用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

憧憬巴黎街头的黎明 2024-12-30 16:36:33

对于那些仍在寻找这个的人来说 - 我关闭程序的方式非常非常简单:

if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
    System.exit(1);
}

希望这会有所帮助。

Just for people who are still looking for this - the way I close my programs is very, very simple:

if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
    System.exit(1);
}

Hope this helps.

于我来说 2024-12-30 16:36:33

这有效吗?

// Escape Case
else if(keyCode == 27){
            ChakmaSystem.getInstance().getGui().getSlideShowGUI().setVisile( false );
            ChakmaSystem.getInstance().getGui().getSlideShowGUI().dispose();
        }

Does this work?

// Escape Case
else if(keyCode == 27){
            ChakmaSystem.getInstance().getGui().getSlideShowGUI().setVisile( false );
            ChakmaSystem.getInstance().getGui().getSlideShowGUI().dispose();
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文