2012-03-31 3 views
0

Я создаю базовую заставку для небольшого проекта для колледжа, и у меня возникают проблемы с закрытием JFrame после его открытия. Я удалил внешнюю панель, чтобы сделать ее подходящей заставкой, но теперь мне нужно открыть диспетчер задач, чтобы закрыть программу, я хочу, чтобы окно закрывалось, когда я нажимаю кнопку на клавиатуре, как я могу это сделать? Спасибо заранее.Закрытие JFrame с помощью клавиатуры

------- -------- EDIT

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

import java.awt.Color;  
import javax.swing.JFrame;  
public class ScreensaverTest 

{  
public static void main(String[] args)  
{   
    JFrame frame = new JFrame("Screen Saver"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setUndecorated(true); 
    ScreenSaverJPanel screensaverTestJPanel = new ScreenSaverJPanel(); 
    frame.add(screensaverTestJPanel); 
    frame.setBackground(Color.BLACK); 
    frame.setVisible(true); 
    frame.setLocation(0, 0); 
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    }  
} 

-------- EDIT ---------

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

+0

Просто создайте KeyListener и закройте программу всякий раз, когда это событие произошло. – dexametason

ответ

2

Есть много примеров того, как это сделать.

Вам необходимо добавить eventListener к кадру, который прослушивает клавиатурные входы, а затем закрывает рамку. Попробуйте посмотреть на это: http://www.java2s.com/Code/Java/Swing-JFC/Reacttoframecloseaction.htm

Вам придется заменить событие с чем-то keyboard-related, но это лучший путь, я думаю ..

Edit:

Чтобы ответить на редактирование в сообщении вы можете сделать что-то вроде этого:

import javax.swing.*; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

public class Test { 

    public Test() { 
     final JFrame frame = new JFrame("Screen Saver"); 
     frame.validate(); 
     frame.setVisible(true); 

     KeyAdapter listener = new KeyAdapter() { 
      @Override public void keyPressed(KeyEvent e) { 
       frame.dispose(); 
      } 
     }; 

     frame.addKeyListener(listener); 
    } 

    public static void main(String[] args) { 
     new Test(); 
    } 

} 

И вуаля - это должно работать. Он компилируется для меня на Java 7.

+0

Спасибо за помощь до сих пор, но когда я ввожу введенный код и добавляю импорт и реализую EventListener, я все еще получаю сообщение об ошибке в последней строке кода в addEventListener, говорящей, что «не может найти символ», и я не могу понять что не так, пожалуйста, помогите. – user1305374

+0

Хм .. Да ладно. У моего кода было много ошибок. Извини за это! Я обновляю рабочий пример. –

+0

спасибо! – user1305374

1

Вот код, если у вас есть только один JFrame. Вы должны добавить его при инициализации своих компонентов.

addKeyListener(new KeyAdapter() 
    { 
     @Override 
     public void keyPressed(java.awt.event.KeyEvent evt) 
     { 
      processWindowEvent(new WindowEvent(getWindows()[0], WindowEvent.WINDOW_CLOSING)); 
     } 
    }); 
Смежные вопросы