2015-06-12 3 views
1

Для моего обычая JDialog,JDialog кнопка Закрыть событие

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 

был установлен.

На JDialog есть кнопка. Исходя из условия, он вызывает dialog.dispose().

Оба эти действия вызывают событие windowClosed. Но я хочу определить, что это произошло, потому что нажата кнопка закрытия или вызван метод dispose.

+1

Не можете ли вы установить флаг в своем диалоговом классе? – KDM

+0

Что вы получаете от 'event.getSource()'? – Arvind

+0

Добавьте кнопку «ActionListener» к вашей кнопке? –

ответ

0

Добавить WindowListener в JDialog, а на windowClosed установить булевое или что-то, когда оно закрыто. Также у вас есть buttonClicked boolean, если они нажали кнопку, это было бы правдой, если бы они нажали кнопку выхода в верхней части окна, это было бы неверно.

boolean closed; 
boolean buttonClicked; 
JButton exitbutton; 
JDialog dialog; 
... 
public void actionPerformed(ActionEvent arg0) { 
    buttonClicked = true; 
    dialog.dispose(); 
} 
... 
dialog.addWindowListener(new WindowListener() { 

       public void windowActivated(WindowEvent arg0) { 
        // Do nothing 
       } 
       public void windowClosed(WindowEvent arg0) { 
        closed = true; 
        if(buttonClicked) { 
        //They cliked the button to close it. 
        } else { 
        // They didn't click the button, they clicked exit in the top right corner of screen. 
        } 
       } 
       public void windowClosing(WindowEvent arg0) { 
        // Do nothing 
       } 
       public void windowDeactivated(WindowEvent arg0) { 
        // Do nothing 
       } 
       public void windowDeiconified(WindowEvent arg0) { 
        // Do nothing 
       } 
       public void windowIconified(WindowEvent arg0) { 
        // Do nothing 
       } 
       public void windowOpened(WindowEvent arg0) { 
        // Do nothing 
       } 

      });