Как закрыть jframe с помощью keyListener

Я пишу простую программу слайдов в java. В этой программе я хочу показать свои слайды, как powerpoint, в новом окне.

У меня есть основной графический интерфейс с одноэлементным шаблоном, поэтому я создаю свой SlideShowGUI в своем MainGUI,

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.

В SlideShowGUI я добавил свой собственный KeyListener, который отслеживает левые и правые кнопки и кнопки выхода. Левая и правая работают правильно, однако я хочу, чтобы кнопка выхода закрывала только окно SlideShowGUI.

Для этого в моем кейлистере я написал следующие коды:

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

Я знаю, что когда я нажимаю выход, он попадает в этот случай, однако окна не закрываются.

Что я должен делать ?

Спасибо.


person CanCeylan    schedule 02.01.2012    source источник


Ответы (2)


Просто для людей, которые все еще ищут это - то, как я закрываю свои программы, очень и очень просто:

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

Надеюсь это поможет.

person Harrison    schedule 19.12.2018

Это работает?

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