Swing Dynamisches Verhalten bei Änderung Fenstergröße

Nokia8210

Mitglied
Hallo allerseits,

ich habe ein Programm erstellt, jedoch noch einige Probleme mit der GUI, ich schaffe es nicht, dass sie sich so verhält wie ich das möchte.
Und zwar bestehen die oberen 2/3 aus einer Tabelle und unten gibt es dazu ein Formular.
Das Formular ist mit dem DefaultFormBuilder gebastelt und passt vom Verhalten her schon.
Die Tabelle jedoch nicht. Diese soll bei maximiertem Programm die volle Bildschirmbreite einnehmen, bei Minimierungen bis zu einer gewissen Größe verkleinert werden, in der Breite so breit wie das Formular ist, in der Höhe bis ca 50% ihrer Ursprungsgröße.
Hier mal ein vereinfachter Ausschnitt dazu:


Java:
        dfb = new DefaultFormBuilder(formlayout)
        dfb.appendColumn("right:pref");
        dfb.appendColumn("5dlu");
        dfb.appendColumn("left:pref");
        
        txt_name = new JTextField();
        dfb.append("Name:", txt_name);
        dfb.nextLine();
              
        txt_vorname = new JTextField();
        dfb.append("Vorname:", txt_vorname);
        dfb.nextLine();
               
        pnl_anw = dfb.getPanel();
        
	  //Notwendig weil später mitunter mehr Komponenten eingefügt werde
        panel_formular_container = new JPanel();
        panel_formular_container.add(pnl_anw);
        
        panel_button = new JPanel();
        panel_button.add(btn_speichern);
        panel_button.add(btn_loeschen);
        

        panel_form = new JPanel();
        panel_form.setLayout(new BorderLayout());
        panel_form.add(panel_formular_container, BorderLayout.NORTH);
        panel_form.add(panel_button, BorderLayout.CENTER);
        
        panel_suchen = new JPanel();
        panel_suchen.add(txt_suche);
        panel_suchen.add(btn_suchen);        
      
        sp_tabelle.setMaximumSize(new Dimension(1000, 600));
        sp_tabelle.setMinimumSize(new Dimension(500, 300));
        sp_tabelle.setPreferredSize(new Dimension(500,300));
        
        panel_daten = new JPanel();
        panel_daten.add(sp_tabelle);
        
        panel_tabelle = new JPanel();   
        panel_tabelle.setLayout(new GridBagLayout());
        
        c = new GridBagConstraints();
        c.gridx = 0;
        c.gridy = 0;
        c.fill = GridBagConstraints.BOTH;
        panel_tabelle.add(panel_daten, c);
        
        c = new GridBagConstraints();
        c.gridx = 0;
        c.gridy = 1;
        c.fill = GridBagConstraints.NONE;
        panel_tabelle.add(panel_suchen, c);
      
        this.setLayout(new BorderLayout());
        this.add(panel_tabelle, BorderLayout.NORTH);
        this.add(panel_form, BorderLayout.SOUTH);
        this.setVisible(true);

Das Ganze ist in einer Klasse die von JPanel ableitet. Im letzten Abschnitt das Layout zu ändern hab ich zuerst versucht, hatte aber auch nichts gebracht. Auch an anderen Stellen habe ich schon mit FormLayout und :fill rumprobiert.
Ein weiterer Ansatz war ein minimales Layout zu basteln und dann mit GridBagLayout und fill zu arbeiten, sprich dynamisch zu vergrößern und sich gar nicht um verkleinern kümmern, hat aber auch nicht funktioniert.
Als ich die ScrollPane in der die Tabelle liegt, mal direkt zum (Form)Layout hinzugefügt hatte, hatte diese tatsächlich das gewünschte Verhalten in der Breite, aber nicht in der Höhe, an einer anderen Stelle des Programms beinhaltet das die ScrollPane enthaltende Panel jedoch noch eine zweite Komponente.
Muss ich nun jedem Container der eine Komponente enthält, also in dem Fall zig Panels, ein Layout hinzufügen damit das Ganze funktioniert? Gibt es auch noch einfacherere Möglichkeiten?

Gruß
Nokia8210
 

Nokia8210

Mitglied
IST_SOLL_MAX

So sieht das ganze maximiert aus und das passt auch so, die Tabelle nimmt etwa 2/3 der Größe ein, darunter zentriert das Formular.

IST_MIN

So sieht das ganze minimiert aus, die Komponenten verändern ihre Größe weder Vertikal noch Horizontal und werden einfach abgeschnitten, Temporär hab ich mir mit Scrollbars geholfen die auftauchen sobald das Fenster minimiert wird.

SOLL_MIN

Und so soll es minimiert aussehen. Das Fenster soll sich nur bis zur Breite des Formulars verkleinern lassen, die Tabelle sich dementsprechend mit verkleinern und auch in der Höhe bis zu einem bestimmten Wert kleiner werden. Das Formular soll ganz zu sehen sein.

Das gepostete Beispiel oben könnte ein leicht anderes Verhalten produzieren, als das hier als IST dargestellte, das liegt daran, dass ich ein wenig rumprobiert habe, das auf der Skizze gezeigte, ist aber der Urzustand, wie es vor dem rumprobieren war.
Mit einem stumpfen BorderLayout habe ich es jetzt immerhin geschafft, das die Tabelle sich in der Breite anpasst, dafür scheint die Höhe nun wie festgenagelt und ist auch im maximierten Zustand viel zu klein.

Ich verwende eine GUI Klasse die ein Panel ist.
 
Zuletzt bearbeitet:

L-ectron-X

Gesperrter Benutzer
Dann bietet es sich an, den äußeren Rahmmen deines Bildes als Haupt-Panel zu betrachten, in welchem die anderen beiden Panels mit der Tabelle und den Formular-Komponenten liegen.

Das Haupt-Panel selbst hat hier bei ein GridBagLayout, mit dem sich das Tabellen-Panel auf volle Breite und Höhe "aufblasen" lässt (GridBagConstraints.BOTH, weightx und weighty bekommen den Wert 1.0).

Das Tabellen-Panel ist also Teil des Haupt-Panels.
Genauso ist das Formular-Panel Teil des Haupt-Panels. Es darf sich nicht "aufblasen" lassen und nur so groß werden, wie die eingebauten Komponenten an Platz verbrauchen (GridBagConstraints.NONE, weightx und weighty bekommen den Wert 0.0).

Das Tabellen-Panel kann mit einem BorderLayout ausgestattet werden, das ist am Einfachsten und bringt den gewünschten Effekt. Das Tabellen-Panel liegt hier im CENTER-Bereich.
Das Formular-Panel bekommt das Layout, mit dem sich die Komponenten am besten anordnen lassen.
 

Nokia8210

Mitglied
Hm, so simpel doch.
Frag mich nicht warum, aber auf die Idee meinem ganz äußeren Panel ein GridBagLayout zu verpassen bin ich nicht gekommen. Danke.
Jetzt hab ich noch das Problem, dass sich bei einer Verkleinerung der Tabelle teilweise Text abschneidet. Muss ich da irgendeinen Listener auf die Tabellenbreite oder Fensterbreite verwenden und dann die Zeilenhöhe der Tabelle neu setzen oder geht das irgendwie einfacher?
 

Nokia8210

Mitglied
Hat sich erledigt, ich habe einfach einen ComponentListener genommen, und erweitere die Zeilenhöhe bei einem Verkleinern der Tabelle. Danke nochmal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
T dynamisches Koordinatenkreuz mit scalierung AWT, Swing, JavaFX & SWT 7
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3
T Swing Dynamisches Bild AWT, Swing, JavaFX & SWT 8
T RCP-SWT dynamisches ScrolledComposite AWT, Swing, JavaFX & SWT 2
B dynamisches Spektrogramm in Java-Webanwendung AWT, Swing, JavaFX & SWT 3
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
M Dynamisches generieren und ausrichten von Komponenten AWT, Swing, JavaFX & SWT 11
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
L Dynamisches Erzeugen eines Button AWT, Swing, JavaFX & SWT 2
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
Juelin Komisches Verhalten des JavaFXprogrammes AWT, Swing, JavaFX & SWT 4
Hatsi09 JavaFx Mediaplayer seltsames Verhalten AWT, Swing, JavaFX & SWT 0
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
pkm kryptisches Verhalten bei GridLayout AWT, Swing, JavaFX & SWT 4
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
T JavaFX Verhalten ImageView bei grossen BIlddateien AWT, Swing, JavaFX & SWT 0
HarleyDavidson Swing Seltsames Verhalten GridBagLayout AWT, Swing, JavaFX & SWT 11
P JFrame langsam / seltsames Verhalten AWT, Swing, JavaFX & SWT 6
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JTabbedProblem - "komisches" Verhalten AWT, Swing, JavaFX & SWT 2
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D Seltsames Verhalten meiner CheckBoxen AWT, Swing, JavaFX & SWT 7
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
E Swing Maskformatter Verhalten?! AWT, Swing, JavaFX & SWT 5
A JTreeTable - unerklärliches Verhalten von getValueAt AWT, Swing, JavaFX & SWT 2
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
hdi SWT Shell: Auslagerung von Code verändert Verhalten AWT, Swing, JavaFX & SWT 6
U Verhalten des CheckBoxCellEditors AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
I Hyper-Link ähnliches Verhalten AWT, Swing, JavaFX & SWT 5
L JFrame-Verhalten bei Klick auf Schließen-Kreuz ändern AWT, Swing, JavaFX & SWT 3
R JProgressBar-Verhalten AWT, Swing, JavaFX & SWT 5
dzim [SWT] Seltsames verhalten bei TableViewer mit TextCellEditor AWT, Swing, JavaFX & SWT 5
G Seltsames Verhalten JButton AWT, Swing, JavaFX & SWT 6
J JScrollBar scroll-Verhalten auf 2 JButtons umleiten? AWT, Swing, JavaFX & SWT 2
ARadauer bestimmtes verhalten für jtable AWT, Swing, JavaFX & SWT 6
M Merkwürdiges Verhalten von ListCellRender AWT, Swing, JavaFX & SWT 2
M Seltsames Verhalten Tooltip und JDialog AWT, Swing, JavaFX & SWT 8
S Wie verhalten sich transparente Grafiken? AWT, Swing, JavaFX & SWT 5
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
S Seltsames verhalten des Befehles getContentPane().add(.) AWT, Swing, JavaFX & SWT 7
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
M drawImage mit seltsamen verhalten AWT, Swing, JavaFX & SWT 2
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
melaniemueller Reaktion auf Änderung im Kombinationsfeld AWT, Swing, JavaFX & SWT 5
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
L JSplitPane - auf Änderung reagieren AWT, Swing, JavaFX & SWT 4
S Swing Bild auf jPanel nach Änderung von JComboBox zeichnen AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
TheWhiteShadow JList-Inhalt nach Änderung weg AWT, Swing, JavaFX & SWT 3
H Swing Auf Änderung bei JRadioButton reagieren. AWT, Swing, JavaFX & SWT 3
C Swing Änderung der Tastatur-Navigation in einer JTable AWT, Swing, JavaFX & SWT 4
G Components erscheinen erst bei Änderung des Frames AWT, Swing, JavaFX & SWT 3
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
P Swing Event das ausgelöst wird, sobald Änderung der Größe Abgeschlossen ist AWT, Swing, JavaFX & SWT 4
D LayoutManager GridBagLayout, Änderung zur Laufzeit AWT, Swing, JavaFX & SWT 4
jueki Event bei Änderung der Spaltenbreite in einem JTable AWT, Swing, JavaFX & SWT 15
S Swing JTable nach einer Änderung einer Zelle komplett aktualisieren. AWT, Swing, JavaFX & SWT 10
Milady Swing Änderung von Daten mit sql AWT, Swing, JavaFX & SWT 2
E 2 Frames - eine Änderung AWT, Swing, JavaFX & SWT 4
T JTable erst nach Änderung der Spaltenbreite neu zeichnen AWT, Swing, JavaFX & SWT 10
Balbes Änderung des Wertes von JCheckBox in einer JTable AWT, Swing, JavaFX & SWT 4
I Swing Bild wird erst bei manueller Änderung der Fenstergrösse gezeichnet AWT, Swing, JavaFX & SWT 3
hdi Swing setPreferredSize zeigt keine Änderung AWT, Swing, JavaFX & SWT 2
F JFrame Änderung der Größe erkennen AWT, Swing, JavaFX & SWT 2
J Font Änderung nach Editorwechsel? AWT, Swing, JavaFX & SWT 3
M JTable alte Daten vor Änderung abfangen AWT, Swing, JavaFX & SWT 11
S Wichtige Frage zu JTextField-Reaktion auf Änderung des Inhal AWT, Swing, JavaFX & SWT 6
B Auf Fenster Pos.Änderung reagieren und 2. Fenster andocken AWT, Swing, JavaFX & SWT 10
J jTable, welcher listener für Änderung der Spaltenbreite AWT, Swing, JavaFX & SWT 2
P Änderung der Fenstergrösse abragen und reagieren. AWT, Swing, JavaFX & SWT 3
G Bei Änderung an einem Texfeld in SWT eine Aktion AWT, Swing, JavaFX & SWT 3
S JTree - bei Änderung in DB neu zeichnen AWT, Swing, JavaFX & SWT 5
G Dringend ! SWT-Table übernimmt Änderung nicht AWT, Swing, JavaFX & SWT 2
B JTable - Letzte Änderung wird nicht übernommen AWT, Swing, JavaFX & SWT 5
G Auf Fenstergrößen-Änderung reagieren AWT, Swing, JavaFX & SWT 10
J JTable Änderung erst beim Zeilenwechsel AWT, Swing, JavaFX & SWT 5
M JTree nach LaF-Änderung komisch AWT, Swing, JavaFX & SWT 4
M GUI-Repaint nach Änderung der Fenstergröße AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben