tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
561
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sk1m0 sk1m0 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    2
    Hi, ich möchte einem JPanel perMausclick zur Laufzeit neue Komponenten hinzufügen.
    Laut getComponentCount() geschieht dies auch, trotz updateUI() werden diese jedoch nicht angezeigt.
    Hier der Code

    private void klassenAnsicht(java.awt.event.ActionEvent evt) {

    System.out.println(jPanel1.getComponentCount());

    jPanel1.add(new JButton("hallo"));

    System.out.println(jPanel1.getComponentCount());

    jPanel1.setBackground(Color.red);


    jPanel1.updateUI();

    }

    die System.out liefern 0 und 1
    Die Hintergrundfarbe ändert sich,
    der Button bleibt allerdings unsichtbar.

    Ich habs auch schon mit
    jPanel1.revalidate();
    jPanel1.updateUI();
    jPanel1.doLayout();
    versucht, klappt leider auch nicht.


    Hat jemand ne Idee?
    Danke schonmal!
     

  2. #2
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Hallo,

    es gibt noch
    .validate()
    und
    .invalidate()

    Was für einen Layoutmanager hat den das jPanel1?

    Du solltest für Code-Beispiele die Code-Tags verwenden.

    MfG
    hansmueller
     

  3. #3
    sk1m0 sk1m0 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    2
    Das jPanel1 hat(te) ein GroupLayout.
    Mit FlowLayout und BoxLayout funktioniert es einwandfrei. Und ich kanns vorausichtl. auch damit realisieren. Wenns nicht irgendeinen speziellen "Kniff" beim GroupLayout gibt, den man beachten muss, werde ich mir wohl einfach mal in den kommenden Tagen das GroupLayout in all seinen einzelheiten anschauen müssen,


    es gibt noch
    .validate()
    und
    .invalidate()
    denn damit hats leider auch nicht funktioniert.


    Wie dem auch Sei, das Problem ist vorerst vom Tisch. Schande über mein Haupt, dass ich erst nach 5 Stunden auf die Idee gekommen bin einfach mal das Layout des JPanels zu ändern.
    Danke für die Antwort!
    S-kimo
     

  4. #4
    Maddin Maddin ist offline Mitglied Silber
    Registriert seit
    Jul 2010
    Beiträge
    71
    Hallo,

    Wenn du ein GroupLayout hast, wird's problematisch...
    Der Button ist zwar theoretisch auf dem JPanel, das Layout hat ihn aber nicht hinzugefügt.

    Was du machen könntest:
    - anderes Layout
    - zwei GroupLayouts erstellen (eins ohne, eins mit Buttons) und je nach Bedarf das Layout setzen

    Gruß,
    Martin
     

  5. #5
    Der Wolf Der Wolf ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    158
    Hi,

    hast du schonmal versucht mit der .pack() des JFrames ein update der GUI zu erzeugen?

    Gruß
    Der Wolf
     

  6. #6
    hansmueller hansmueller ist offline Mitglied Silber
    Registriert seit
    Sep 2008
    Beiträge
    78
    Hallo,

    Maddin hat ganz recht. Bei einem GroupLayout etwas nachträglich hinzufügen geht eigendlich nicht. Man muß dabei immer ein neues GroupLayout schreiben.
    Aber man kann im GroupLayout die Komponenten mit .setVisible() ein- und ausblenden oder mit .replace() eine Komponente durch eine andere ersetzen.
    Siehe:
    http://download-llnw.oracle.com/java...out/group.html
    Ganz unten das Kapitel "Runtime Changes to Your GUI".

    Allerdings mußt du schon vorher wissen, wie viele Komponenten es sind.
    Ach ja, da gibt es noch einen häßlichen Bug bzgl. des Ein- und Ausblendens, wenn du die Gaps auf Automatik stellst: http://entwickler-forum.de/showthread.php?t=59795
    Dieser tritt aber nur in bestimmten Fällen auf.

    MfG
    hansmueller
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 11.01.11, 21:40
  2. Antworten: 4
    Letzter Beitrag: 22.03.06, 20:50
  3. setLocation() und updateUI()
    Von ellion im Forum Java
    Antworten: 3
    Letzter Beitrag: 12.12.05, 11:12
  4. PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
    Von hennym im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 6
    Letzter Beitrag: 17.09.03, 22:09
  5. Antworten: 6
    Letzter Beitrag: 13.06.02, 12:29

Stichworte