【发布时间】: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();
}
我知道,当我按下转义键时,它会遇到这种情况,但是窗口不会关闭。
我该怎么办?
谢谢。
【问题讨论】: