Как да затворите 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.

За да направя това, в моя keylistener написах следните кодове:

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

Знам, че когато натисна escape, той удря този случай, но прозорците не се затварят.

Какво трябва да направя ?

Благодаря.


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