tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
758
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Halli hallo,
    Es ist cshon wirklich drollig. ich habe eine Anwendung die je nach Berechtigung entsprechende Buttons in diversen Panels anzeigen oder nicht anzeigen soll.
    Dafür verwende ich eigetnlich add(Component) bzw remove(Component)
    Nun Stelle ich aber fest das das remove nich sonderlich zuverlässig zu sein scheint.
    Ein Blick in die Java sourcen offenbart folgende Routine
    --------------------------------------------------------------------------
    /**
    * Removes the specified component from this container.
    * @param comp the component to be removed
    * @see #add
    */
    public void remove(Component comp) {
    synchronized (getTreeLock()) {
    if (comp.parent == this) {
    /* Search backwards, expect that more recent additions
    * are more likely to be removed.
    */
    Component component[] = this.component;
    for (int i = ncomponents; --i >= 0; ) {
    if (component[i] == comp) {
    remove(i);
    }
    }
    }
    }
    }
    --------------------------------------------------------------------------
    Also zunächst verstehe ich nicht warum eigentlich hier einem Component[] als Variable die entsprechende Member zugewiesen wird, zumal diese absolut typengleich ist. allerdings ist dies nciht mein eigentliches Problem.
    Die Routine hat in ihrer Fallunterscheidung if (comp.parent == this) die Anweisung zu removen aber sie tut nix, wenn dieses Container nicht das Parent der gegebene Component ist. Soweit so gut.
    Aber was kann einen Button der auf einem Panel ist veranlassen nicht den Container auf dem er liegt als parent gelten zu lassen? Denn diese Fallunterscheidung schlägt bei mir fehl und der Button wird nicht removed.

    für Hinweise besten Dank im Voraus,

    takidoso
     

  2. #2
    Avatar von steff aka sId
    steff aka sId steff aka sId ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Mannheim
    Beiträge
    341
    Du musst die Componente sich neu initialisieren lassen.
    mit Component.validate(); probier das mal aus müsste eigenltich funktionieren.
    Greetz Steff
     

  3. #3
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    ah ich habe meinProblem gefunden,
    ich hatte das Panel auf dem der Button liegt abgleitet und da es ein zusammengesetztes ist habe ich die die add-Mehtoden überschrieben (delegiert an das eigetnlcihe Panel wo die Buttons erscheinen sollen) aber vergessen das selbe mit den remove-methoden zu tun.
    Meine Güte, das ist immer so eine Sache wenn das ursprüngliche Entwickeln der Anwendung so ewig zurückliegt, da hilft nur Analysieren bis zum letzen Etwas.

    takidoso
     

Ähnliche Themen

  1. jquery show/hide und add/remove
    Von tequila slammer im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 23.04.10, 07:39
  2. Problem mit der remove Funktion
    Von nom im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 29.12.07, 14:44
  3. List component problem
    Von avaz00 im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 19.06.07, 18:54
  4. create und remove Movieclip
    Von suntrop im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 13.03.06, 17:55
  5. VBA - Problem mit Remove Funktion
    Von thekorn im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 21.06.04, 10:50