Как закрыть jframe с помощью keyListener - PullRequest
1 голос
/ 02 января 2012

Я пишу простую программу слайдов в 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, который отслеживает левую правую и escape-кнопки. Левая и правая стороны работают правильно, однако я хочу, чтобы кнопка выхода закрывала только мое окно SlideShowGUI.

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

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

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

Что мне делать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 декабря 2018

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

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

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

0 голосов
/ 02 января 2012

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

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