JPanel dynamisch anpassen

Status
Nicht offen für weitere Antworten.

diabolik

Aktives Mitglied
Mein Programm soll zyklisch Daten aus einer Textdatei einlesen und die darin enthaltenen Werte in entsprechenden Tabellen und Textfeldern darstellen. Hierzu habe ich mir eine JPanel-Klasse mit diversen Tabellen, Labels und Textfeldern erstellt. Nennen wir Sie "panelA".

Ich fülle, beim Start meiner Anwendung, alle Elemente mit allen erforderlichen Daten und importiere das Panel dann mittels ".getContentPane().add(panelA);" in mein Hauptfenster. Dabei werden alle Elemente automatisch der aktuelle gegebenen Fenstergröße angepasst. Das funktioniert!

Nun möchte ich zum Beispiel das Hauptfenster verkleinern. Dann soll sich das Panel direkt nach dem Component Event "componentResized()" mit allen enthaltenen Elementen der neuen Fenstergröße anpassen, ohne das ich die Anwendung neu starten muß. Das funktioniert aber nicht. Ich kann die neue Fenstergröße zwar mühelos abfangen, aber ich weiß nicht wie es hinbekomme, daß das Panel neu erstellt wird und in seiner neuen Form im Hauptfenster dargestellt wird.

Hat jemand ein Idee?
 

KrokoDiehl

Top Contributor
Was benutzt du denn für einen LayoutManager auf dem Panel? Die sind dafür verantwortlich, dass Container (zB JPanel) nach einem Vergrößern/Verkleinern neu gelayoutet werden. Das sollte mit jedem gängigen LayoutManager automatisch tun.
Wenn du allerdings absolute Positionen bei denen Panel-Komponenten benutzt, muss man das Verkleinerungs-/Vergrößerungsverhalten auch selbst implementieren.
 

diabolik

Aktives Mitglied
ich arbeite mit statischen Positionen. Ohne Layout-Manager.

Aber ich berechne ja die ganzen Sachen vor jedem Erstellen. Das funktioniert auch. Wenn ich eine bestimmte Fenstergröße über meine "defaults" festlege und die Anwendung dann neu starte, sieht alles so aus, wie ich es haben will.

Aber wie kann ich im laufenden Betrieb dem Hauptfenster sagen, dass es das geänderte Panel neu laden soll?
 

KrokoDiehl

Top Contributor
Nagut, das macht es nicht einfacher ;)
Aber ich kenne das Problem. Nur ist es bei uns (vorerst) so, dass man nicht vergrößern/verkleinern kann.

Aber zu dir. Du sagst du kannst das Event vom Vergrößern/Verkleinern abfangen, das ist schonmal die halbe Miete.
An der Stelle musst du dann im Grunde genau das machen, was du auch zu Programmstart mit dem Panel machst: Alle Komponenten darauf mit
Code:
setBounds()
neu anordnen (natürlich mit neu berechneten Größen). Unterschied: Du musst die Objekte nicht neu initialisieren, also kein
Code:
new JTable()
etc.

Wenn das nicht tut, probier vorher mal ein
Code:
myPanel.removeAll()
und dann eben wieder ein
Code:
myPanel.add(myTable)
... für alle Komponenten vom Panel.

Und ein
Code:
revalidate()
am Ende der Methode. Ich denke das müsste reichen :)

Java:
protected void layoutMyPanel(int newWidth, int newHeight)
{
    //myPanel.removeAll(); ...ggfs nötig? (s. (*))
    myTable.setBounds( /*neue bounds*/ );
    //myPanel.add(myTable);  (*)

    myTextPane.setBounds( /* neue bounds*/ );
    //myPanel.add(myTextPane); (*)

    ...usw.
    
    myPanel.revalidate();
}
 

Michael...

Top Contributor
ich arbeite mit statischen Positionen. Ohne Layout-Manager.
einen LayoutManager verwenden und schon ist das Problem gelöst.
Aber ich berechne ja die ganzen Sachen vor jedem Erstellen.
und trotzdem kann man einen LayoutManager verwenden. Je nachdem wie komplex die Anordnung ist, könnte man einen eigenen LayoutManager schreiben, was in Deinem Fall, da Du die Größen eh schon berechnest, eventuell keinen grossen Zusatzaufwand darstellt.
 

diabolik

Aktives Mitglied
Es funktioniert! Ich bedanke mich bei Euch! Ich war schon nah dran, hatte aber das .revalidate() im Panel und das .repaint() im MainFrame vergessen!

Danke!!!

PS: dass ich nichts von LayoutManagern halte ist "historisch gewachsen". Ich habe es von je her vorgezogen, die totale Kontrolle über jedes Element in meiner Hand zu halten, weil mich frühere LayoutManager zum Wahnsinn brachten, da sie nicht immer so funktionierten, wie ich es erwartet hätte/hatte. Natürlich bedeutet das immer einen nicht unerheblichen Mehraufwand, kann aber manchmal auch ziemlich nützlich sein...

MfG
Diabolik
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
P JPanel dynamisch mit ActionListener verwalten Java Basics - Anfänger-Themen 3
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20
C JPanel erhält sporadisch keinen Fokus Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben