ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
561
561
EMPFEHLEN
-
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!
-
13.09.10 07:56 #2
- 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
-
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,
denn damit hats leider auch nicht funktioniert.
es gibt noch
.validate()
und
.invalidate()
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
-
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
-
Hi,
hast du schonmal versucht mit der .pack() des JFrames ein update der GUI zu erzeugen?
Gruß
Der Wolf
-
14.09.10 08:05 #6
- 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
-
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
setLocation() und updateUI()
Von ellion im Forum JavaAntworten: 3Letzter Beitrag: 12.12.05, 11:12 -
PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
Von hennym im Forum Videoschnitt, Videotechnik & -produktionAntworten: 6Letzter Beitrag: 17.09.03, 22:09 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren
Login





