Announcement

Collapse
No announcement yet.

Welcher Listener???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Welcher Listener???

    Hallo,

    ich arbeite zur Zeit an einer Java - Swing Anwendung, in der am rechten Rand zur Navigation ein JTree eingebaut ist. Klickt man nun auf einen entsprechenden Zweig, so erscheint im Hauptfenster das entsprechende JPanel.

    Mein Problem ist nun folgendes:

    Wie bekommt das Panel mit, dass es wieder verlassen wird? Das ist wichtig für mich, weil ich beim Verlassen des Panels noch Fehlerabfragen durchführen sollte.

    Welchen Listener gibt es da und wie bau ich ihn ein? Den WindowListener kann ich ja nur für Frames und Dialoge verwenden, nicht aber für Panels.

    Hoffe Ihr könnt mir weiterhelfen!

    Vielen Dank

    Johannes

  • #2
    Hallo,

    ich weiss Loesung nicht, aber, meiner Meinung nach, man muss mit FocusManager arbeiten. Es gibt FocusListener und FOCUS_GAINED und FOCUS_LOST event. Mehr davon steht in Dokumentation.

    Ich hoffe, es hift dir.

    Irin

    Comment


    • #3
      <HTML>
      Hi Hans<BR>Ich weis nicht was du mit den JPanels machen willst:<BR>
      Sollen sie nur über den JTree angezeigt werden oder nicht<BR>
      oder sollen sie auchnoch durch andere Aktionen angezeigt oder verschwinden?<BR>
      Du haettest die Möglichkeit einen Change Listener auf den JTree zu machen und bei jeder Aenderung Aktionen zu starten.<BR><BR>
      Aber ich glaube, immer wenn ein JPanel verschwindet, soll für dieses JPanel eine Aufraeumaktion stattfinden.<BR>Schreibe also ComponentListener fuer alle Panels:<BR><PRE>
      jPanel_1.addComponentListener(new java.awt.event.ComponentAdapter() {
      public void componentHidden(ComponentEvent e) {

      // Deine Methode die die Aktionen beim schliessen installiert
      // kann fuer jedes Panel eine eigene sein, dann brauchst Du
      // nicht die Instance in der Methode abfragen

      jPanels_componentHidden(e);
      }
      });

      jPanel_2.addComponentListener(new java.awt.event.ComponentAdapter() {
      public void componentHidden(ComponentEvent e) {

      // Deine Methode die die Aktionen beim schliessen installiert
      // kann fuer jedes Panel eine eigene sein, dann brauchst Du
      // nicht die Instance in der Methode abfragen

      jPanels_componentHidden(e);
      }
      });

      void jPanels_componentHidden(ComponentEvent e) {
      if(e.getSource().getClass().isInstance(jPanel_1) )
      {
      strMessage = "component Panel_1 hidden";
      JOptionPane.showMessageDialog(null,strMessage, "ComponentListener", JOptionPane.OK_CANCEL_OPTION);
      }

      if(e.getSource().getClass().isInstance(jPanel_2) )
      {
      strMessage = "component Panel_2 hidden";
      JOptionPane.showMessageDialog(null, strMessage, "ComponentListener", JOptionPane.OK_CANCEL_OPTION);
      }

      }
      </PRE>
      <BR>Ich hoffe das hilft Dir<BR>Gruss Roli</HTML&gt

      Comment


      • #4
        Hallo Johannes,
        hast du die Lösung? Ich habe gerade das gleiche Problem, allerdings mit dem JTabbedPane.
        Die Vorschläge mit dem FocusListener od. ComponentListener sind natürlich falsch, da im ersten Fall muss das JPanel beim Verlassen nicht unbedingt das Focus haben, und im zweiten
        Fall ist es schon zu spät, da das verlassene Jpanel nicht mehr sichtbar ist.

        Felix Lachowitsc

        Comment

        Working...
        X