2013-09-05 2 views
2

Я сделал приложение java swing с JInternal frames. Когда я закрываю внутренний фрейм, он должен показывать поп-сообщение «Вы уверены?» в панели параметров. Как я могу поместить событие в закрытую работу JInternal frame? Пожалуйста, помогите мне.Как спросить «Вы уверены?» перед закрытием JInternalFrame?

+3

посмотрите на [InternalFrameListener] (http://docs.oracle.com/javase/7/docs/api/ javax/swing/event/InternalFrameListener.html) – MadProgrammer

+0

@MadProgrammer Благодарим за помощь. –

ответ

7

Для получения информации о том, как написать InternalFrameListener, см. http://docs.oracle.com/javase/tutorial/uiswing/events/internalframelistener.html. Вы можете поместить весь свой код для закрытия внутри метода internalFrameClosing(InternalFrameEvent e).

Затем просто добавить новый экземпляр вновь созданный InternalFrameListener к вашему JInternalFrameJInternalFrame с методом addInternalFrameListener, как вы можете видеть на предыдущей ссылке.

Вот информация о addInternalFrameListener метод: JavaDoc

Код:

public class InternalFrameEventDemo implements InternalFrameListener{ 
    JInternalFrame frame; 
    public InternalFrameEventDemo() { 
     frame = new JInternalFrame("Event Generator", 
                 true, //resizable 
                 true, //closable 
                 true, //maximizable 
                 true); //iconifiable 
     //so that you can decide whether to close it or not 
     frame.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE); 
     frame.addInternalFrameListener(this); 
    } 
    public void internalFrameClosing(InternalFrameEvent e) { 
     //YOUR CODE HERE 
     int option = JOptionPane.showConfirmDialog(null, "Really Close?", "Exit", JOptionPane.YES_NO_OPTION); 
     if (option == JOptionPane.YES_OPTION){ 
      //call dispose to really close it 
      dispose(); 
     } 
    } 
    public void internalFrameClosed(InternalFrameEvent e) { 

    } 
    public void internalFrameOpened(InternalFrameEvent e) { 

    } 
    public void internalFrameIconified(InternalFrameEvent e) { 

    } 
    public void internalFrameDeiconified(InternalFrameEvent e) { 

    } 
    public void internalFrameActivated(InternalFrameEvent e) { 

    } 
    public void internalFrameDeactivated(InternalFrameEvent e) { 

    } 

    public static void main(String[] args) { 
     new InternalFrameEventDemo(); 
    } 
} 
+0

Спасибо за помощь. –

+0

Не проблема, удачи в реализации. – mdenton8

+0

Есть ли причина, по которой вы использовали прослушиватель, а не адаптер? – Bonatti

Смежные вопросы