Swing Netbeans Panel einbinden

Status
Nicht offen für weitere Antworten.

heidiweber

Aktives Mitglied
Hallo,

ich habe mit Netbeans eine kleine GUI erstellt.

Jetzt möchte ich per Code ein Panel einblenden:


Java:
        panel1 p1 = new panel1();
        p1.setName("p1"); // NOI18N
        
        javax.swing.GroupLayout abcd123Layout = new javax.swing.GroupLayout(p1);
        p1.setLayout(abcd123Layout);
        abcd123Layout.setHorizontalGroup(
            abcd123Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 380, Short.MAX_VALUE)
        );
        abcd123Layout.setVerticalGroup(
            abcd123Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 179, Short.MAX_VALUE)
        );        

       javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(p1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addContainerGap())
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(p1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );        
        
        mainPanel.updateUI();


Diese Methode führe ich über eine Button-Action aus. Doch es passiert nichts. Das Panel wird nicht angezeigt (auf dem einzublendenden Panel habe ich natürlich Buttons und Textfelder eingefügt, so dass man das Panel auch erkennen kann).

Wo liegt der Fehler? Kann mir vielelicht bitte jemand einen Tipp geben?
Vielen Dank
Grüße
Heidi
 
Zuletzt bearbeitet von einem Moderator:

diggaa1984

Top Contributor
Java:
panel1 p1 = new panel1();
p1.setName("p1"); // NOI18N

javax.swing.GroupLayout abcd123Layout = new javax.swing.GroupLayout(p1);
p1.setLayout(abcd123Layout);
abcd123Layout.setHorizontalGroup(
abcd123Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING)
.addGap(0, 380, Short.MAX_VALUE)
);
abcd123Layout.setVerticalGroup(
abcd123Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING)
.addGap(0, 179, Short.MAX_VALUE)
); 

javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.Gr oupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(java x.swing.GroupLayout.Alignment.TRAILING)
.addComponent(p1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addContainerGap())
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.Gr oupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addPreferredGap(javax.swing.LayoutStyle.Component Placement.RELATED)
.addComponent(p1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
); 

mainPanel.updateUI();

du meinst du hast im originalcode noch irgendwo p1.add(irgendNenButton) oder dergleichen?
 

L-ectron-X

Gesperrter Benutzer
Wenn ich das jetzt richtig verstanden habe, willst du zur Laufzeit ein Panel irgendwo hinzufügen. Aber es erscheint nicht?

So wie ich das sehe, fehlt der Aufruf von validate() auf dem Container, der das Panel anzeigen soll.
Wenn du zur Laufzeit Komponenten auf deine Oberfläche setzt, muss diese bei Verwendung von LayoutManagern neu berechnet und gezeichnet werden.
Das Neuberechnen und Zeichnen wird von validate() angefordert.

updateUI() ist hier verkehrt.
 

heidiweber

Aktives Mitglied
Vielen Dank an euch beiden.

Ich habe das über das CardLayout realisiert - nach einem spitzen Tipp von .....: L-ectron-X

Hier der Link dazu:
http://www.java-forum.org/awt-swing-swt/79536-netbeans-graphical-user-interface-inhalt-aendern.html

Hat zwar ein bisschen gedauert - aber wenn mans mal geschnallt hat:)

Jetzt aber zu meinem nächsten "Problem" - und zwar zum Speicherverbrauch.
Ich erstelle mir z.B. 10 JPanels.

Auf dem "mainPanel" (das mit dem CardLayout) binde ich die so ein:
JPanel1 p1 = new JPanel1();
mainPanel.add("myP1", p1);

Switche ich jetzt zu einem anderen Panelm so muss ich das ja wieder einbinden:
JPanel2 p2 = new JPanel2();
mainPanel.add("myP2", p2);

Mache ich das für alle 10, so steigt doch sinnloserweise der Speicherverbrauch an - oder?

Mit mainPanel.removeAll() kann man die ja wieder "ausblenden" --> werden die hier auch aus dem Speicher entfernt bzw. wie entfernt man die nicht mehr benötigten Panels wieder sauber aus dem Speicher?

Vielen Dank für die Hilfe
Grüße
Heidi
 

diggaa1984

Top Contributor
wenn du 10 versch. Panels hast, brauchst du auch 10 versch. Objekte vom Typ Panel. Da gibts nix zu dezimieren. Wenn du switchen willst, dann wird einfach das jeweilige Panel, welches du eben sichtbar machen möchtest, in den Vordergrund geholt; da wird nix removed oder dergleichen - die 10 Panels sind weiterhin alle vorhanden.

Wenn du manuell eins Löschen möchtest, weil du es gar nicht mehr brauchst, dann könnte das remove schonmal helfen, ob das aber reicht ist fraglich, das kommt darauf an ob du deine Referenzen noch woanders ablegst.
 

L-ectron-X

Gesperrter Benutzer
Das CardLayout wurde dafür gedacht, wenn man mehrere vorher angelegte Referenzen von GUI-Komponenten halten möchte.
Wenn ein Panel mit CardLayout andere Komponenten enthalten soll, (Wechsel der Ansicht) holt man das entsprechende Panel nach vorne.
Es macht hier also keinen Sinn, etwas zu entfernen.

Wenn man möchte, dass Referenzen irgendwann vom Garbage Collector zerstört werden, kann es helfen diese Referenzen auf null zu setzen. Man kann dann aber trotzdem noch nicht sagen, ob und wann der GC diese Referenzen entfernt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin JavaFX Netbeans Aufruf Funktion aus Scenebuilder AWT, Swing, JavaFX & SWT 8
MiMa Netbeans Projektdatum herausfinden? AWT, Swing, JavaFX & SWT 3
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
A Flug Drone steuern "DronePosition" NetBeans AWT, Swing, JavaFX & SWT 4
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
M NetBeans Swing GUI Builder AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
Helgon Swing Mit Swing zeichnen / NetBeans GUI AWT, Swing, JavaFX & SWT 11
B Swing Filter für JTable mit Netbeans Editor AWT, Swing, JavaFX & SWT 2
S NetBeans GUI Builder - Code-Platzierung AWT, Swing, JavaFX & SWT 3
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
N Swing Netbeans 7.1 keine DesktopApplication mehr möglich ? AWT, Swing, JavaFX & SWT 15
L Swing Fenstergröße setzen (Netbeans) AWT, Swing, JavaFX & SWT 6
T jpanel höhe netbeans.... AWT, Swing, JavaFX & SWT 5
B Netbeans Swing/AWT Editor editierbar? AWT, Swing, JavaFX & SWT 5
B Look And Feel ändern (Netbeans) AWT, Swing, JavaFX & SWT 18
T JButtons indexiert unter NetBeans anlegen AWT, Swing, JavaFX & SWT 7
I jList und Netbeans AWT, Swing, JavaFX & SWT 4
G GUI Elemente aus NetBeans verwenden AWT, Swing, JavaFX & SWT 8
Binary.Coder Netbeans GUI zu Eclipse (schon gegooglet und einiges ausprobiert). AWT, Swing, JavaFX & SWT 4
F Netbeans Gui in BlueJ Projekt AWT, Swing, JavaFX & SWT 9
D Netbeans GUI-Builder Darstellungsprobleme AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
S auf einem mit Netbeans (GUI) erstellten JPanel (eines JFrames) zeichnen? AWT, Swing, JavaFX & SWT 7
S Java3D in ein JPanel integrieren mit Netbeans 6.8 AWT, Swing, JavaFX & SWT 4
V [SUCHE]GUI Programmier Tutorial[Netbeans] AWT, Swing, JavaFX & SWT 8
U Netbeans GUI nach Eclipse AWT, Swing, JavaFX & SWT 7
S GUI von Sourcecode in Netbeans AWT, Swing, JavaFX & SWT 3
S NetBeans && multiple Fensteroeffnung AWT, Swing, JavaFX & SWT 3
R AWT [Anfänger] Radio Buttons NetBeans 6.7.1 AWT, Swing, JavaFX & SWT 2
C NetBeans Gui-Inhalt ändern AWT, Swing, JavaFX & SWT 4
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
H Netbeans und JavaDB AWT, Swing, JavaFX & SWT 11
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
L Animierter Splash-Screen (mit NetBeans 6.1 z.B.) AWT, Swing, JavaFX & SWT 2
H Netbeans-Anwendung schliessen AWT, Swing, JavaFX & SWT 8
O Bindings, dynamische Verbindung (Vorbau mit Netbeans) AWT, Swing, JavaFX & SWT 10
G paintComponent() Methode für JPanel in NetBeans überschreibe AWT, Swing, JavaFX & SWT 2
D Problem mit Netbeans und repaint() AWT, Swing, JavaFX & SWT 5
J Auslösung von Aktionen über Tastatur (Netbeans) AWT, Swing, JavaFX & SWT 23
K Netbeans GUI Builder (Matisse) und erstellen von JPopupMenu AWT, Swing, JavaFX & SWT 1
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
loadbrain Icon für JFrame mit Netbeans AWT, Swing, JavaFX & SWT 3
L JTable nach Buttonklick auslesen [NetBeans] AWT, Swing, JavaFX & SWT 4
L NetBeans will ne Klammer ich weiß aber nicht wohin AWT, Swing, JavaFX & SWT 7
M Button und Exception mit NetBeans AWT, Swing, JavaFX & SWT 3
M Einstellung des Projekt-Verzeichnis in NetBeans AWT, Swing, JavaFX & SWT 4
P Fehler beim Verwenden von swt.jar mit NetBeans AWT, Swing, JavaFX & SWT 2
R NetBeans - JFrame und JPanel AWT, Swing, JavaFX & SWT 3
H AbsoluteLayout nicht nur unter Netbeans AWT, Swing, JavaFX & SWT 5
A Applikation mit Netbeans-Design AWT, Swing, JavaFX & SWT 4
F Swing mit NetBeans AWT, Swing, JavaFX & SWT 6
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben