WindowEvent löst immer PropertyChangeListener aus

  • Themenstarter Themenstarter Monsterbacke
  • Beginndatum Beginndatum
M

Monsterbacke

Gast
Hallo!
Ich benutze für mein Java-Programm den JCalendar von Toedter. In einem JDialog habe ich an einem JDateChooser, was einfach eine Komponente ist, die von JPanel erbt, einen PropertyChangeListener angehangen. Das Komische ist, dass die propertyChange-Methode aufgerufen wird, wenn man den JDialog schließt, obwohl der JDialog eine eigene windowClosing-Methode besitzt. Wie kann das sein?
 
Ohne es genau zu wissen, aber "visible" kann ja auch eine Property vom Panel sein. Stört dich das Ereignis denn? Du must ja nicht darauf reagieren.
 
Ja, es stört. Die propertyChange-Methode soll eben nur ausgeführt werden, wenn man auf den JDateChooser klickt. Wenn man auf das "X" des Fensters klickt, soll nichts passieren, aber es wird eben die propertyChange-Methode aufgerufen.
 
Nun, wenn das Event vom JPanel kommt, wirst du reichlich wenig daran ändern können, aber das Event kannst du ja raus filtern:
Java:
@Override
public void propertyChange( PropertyChangeEvent event )
{
    if ("visible".equals(event.getPropertyName())) // oder wie auch immer das störende Event heißt
        return;

    // sonstige Impl
}
 
Nun, wenn das Event vom JPanel kommt, wirst du reichlich wenig daran ändern können, aber das Event kannst du ja raus filtern:
Java:
@Override
public void propertyChange( PropertyChangeEvent event )
{
    if ("visible".equals(event.getPropertyName())) // oder wie auch immer das störende Event heißt
        return;

    // sonstige Impl
}

Ich prüfe bereits den PropertyNamen mit folgendem Code:
Java:
if(e.getPropertyName().equals("date")){
Allerdings liefert sowohl der JDateChooser als auch das WindowEvent denselben PropertyNamen, nämlich "date". Ich weiß zwar nicht warum, aber es ist so.
Einen MouseListener kann man leider nicht an den JDateChooser anhängen.
 
dann musst du wohl den debugger anschemeißen woher das 2te event kommt. ich denke mal er setzt irgendwo das datum...
 
Ah, ich glaube ich beginne zu verstehen:
Der JDateChooser ist so ausgelegt, dass es kein Abbrechen gibt, d.h. auch wenn du das Fenster beendest, nimmt er das aktuell selektierte Datum als "das hat der Benutzer gewählt". Kann es ein solcher Grund sein?
 
Hm...das kann eigentlich nicht sein. Ich öffne ja den JDialog und drücke sofort wieder auf das "X", um das Fenster zu schließen, ohne irgendwie den JDateChooser zu verwenden. Aber trotzdem wird ein PropertyChangeEvent mit dem Namen "date" gefunden.
 
Oben ist doch beschrieben was passiert... schau doch einfach den value an welchen du bekommst wahrscheinlich das aktuelle datum... dann setz ein breakpoint rein und schau wann das event geschmissen wird und schau ob du es unterdrücken kannst...
ein KSKB ist in diesem fall auch kein fehler...
 

Neue Themen


Zurück
Oben