Skocz do zawartości

[JAVA] Kłopot z wysłaniem komunikatu do okna JInternalFrame


xevil21

Polecane posty

Witam.

 

Chciałem zamknąć okienko typu JInternalFrame wysyłając komunikat.

 

Wzorując się na działającym przykładzie dla okna JFrame:

 


java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new java.awt.event.WindowEvent(this, java.awt.event.WindowEvent.WINDOW_CLOSING));

java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new javax.swing.event.InternalFrameEvent(this, javax.swing.event.InternalFrameEvent.INTERNAL_FRAME_CLOSING));

 

Zamykanie z przycisku X działa ok, natomiast nie mogę sobie poradzić, aby ten sam efekt uzyskać klikając na stworzony na formatce JButton. Pokazany wyżej komunikat nie działa, tzn. nic się nie dzieje.

 

Pozdrawiam!

 

P.S. Post napisałem również na forum elektrody, akt desperacji.

Link do komentarza
Udostępnij na innych stronach

A czemu na obiekcie JInternalFrame nie wywołasz metody dispose() ?

 

Metodę dispose() wykonuje:

 

   public void internalFrameClosing(InternalFrameEvent e) {
           int i;
Object options[] ={"Tak","Nie"};
           i = JOptionPane.showOptionDialog(null, "Czy chcesz zamknąć to okno?","Okno ''Popraw''",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
           if (i==0) {
               this.dispose();
           }
   }

 

Kiedy naciskam na formatce przycisk "x" znajdujący się na belce tytułowej, wszystko działa, dostaje pytanie czy chce zamknąć i mogę wybrać.

 

Chcę ten sam efekt osiągnąć po naciśnięciu stworzonego przycisku, niestety nie działa.

 

Jak w przycisku wykonam dispose() to formatka znika,

 

a jak setCloseed(true) to pyta czy chce zamknąć, lecz nawet jak wybiorę nie, to i tak się zamyka.

 

Pozdrawiam.

Link do komentarza
Udostępnij na innych stronach

Witam.

 

Postanowiłem przyjrzeć się bliżej plikowi źródłowemu JInternalFrame, i tam znalazłem proste rozwiązanie mojego problemu.

 

Komunikat można wysłać w ten sposób:

 

this.fireInternalFrameEvent(InternalFrameEvent.INTERNAL_FRAME_CLOSING);

 

Wszystko pięknie działa, jednak proszę o opinie, czy to dobre podejście.

 

Mam mało doświadczenie w Javie, nie chce nabrać złych nawyków.

 

Pozdrawiam.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...