【问题标题】:How to close a jframe with keyListener如何使用 keyListener 关闭 jframe
【发布时间】:2012-01-02 16:09:02
【问题描述】:

我正在用 java 编写一个简单的幻灯片程序。在那个程序中,我想在新窗口中显示我的幻灯片,比如 powerpoint。

我的主 gui 具有单例模式,因此,我正在 MainGUI 中创建 SlideShowGUI,

SlideShowGUI 和这段代码很相似,http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/BorderLayoutDemoProject/src/layout/BorderLayoutDemo.java

我用以下代码更改了 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 窗口。

为此,我在 keylistener 中编写了以下代码:

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

我知道,当我按下转义键时,它会遇到这种情况,但是窗口不会关闭。

我该怎么办?

谢谢。

【问题讨论】:

    标签: jframe dispose


    【解决方案1】:

    仅针对仍在寻找此功能的人-我关闭程序的方式非常非常简单:

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      这行得通吗?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-18
        • 2014-06-04
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        相关资源
        最近更新 更多