Swing GridBag-Probleme (Größe und Ausrichtung)

cyclohexan

Mitglied
Hallo,

ich habe einen JDialog mit GridBagLayout und einem versteckten Container irgendwo in der Mitte, der sich bei Bedarf anzeigen lässt.
Am Anfang ist der Container versteckt und nimmt keinen Platz weg, was auch so sein soll. Durch Klick auf einen Button lässt er sich anzeigen und wieder verstecken.

Dabei habe ich die beiden folgenden Probleme:
1. Wenn der Container angezeigt wird und entsprechend Platz braucht, wird das Fenster nicht automatisch mit vergrößert. Oben und unten werden Teile der anderen Elemente abgeschnitten.
2. Wenn ich den Container dann manuell mit der Maus vergrößere, passt alles hinein. Wenn ich den Container dann aber wieder verstecke, wird der Rest zentriert angeordnet. D.h. die Elemente über dem versteckten Container springen nach unten, die unten springen nach oben. Ich hätte lieber alles dauerhaft oben, und falls zu viel Platz da ist, soll die Freifläche unten sein.

Bezüglich des 1. Problems habe ich es schon erfolglos mit repaint() probiert.
Notfalls könnte ich auch ganz unten eine Freifläche einfügen und diese beim ersten Sichtbarmachen des versteckten Containers für immer verschwinden lassen. Das würde zumindest sicherstellen, dass das Fenster von Anfang an groß genug ist. Wäre aber irgendwie unelegant.
Das 2. Problem habe ich versucht, über die GridBagConstraints mit anchor = GridBagConstraints.NORTH zu lösen.
Hat leider auch nichts gebracht.

Hier eine lauffähige Klasse, die das Problem demonstriert:

Java:
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class ProblemDemo extends JDialog implements ActionListener {
	
	private Container content;
	private JPanel invisibleArea;
	
	public ProblemDemo() {
		content = getContentPane();
		
		// layout
		GridBagLayout layout = new GridBagLayout();
		content.setLayout( layout );
		GridBagConstraints constraints = new GridBagConstraints();
		constraints.fill   = GridBagConstraints.BOTH;
		constraints.insets = new Insets( 2, 2, 2, 2 );
		constraints.gridx = 0;
		constraints.gridy = 0;
		constraints.gridheight = 1;
		constraints.gridwidth  = 1;
		
		// add label
		JLabel topLabel = new JLabel("Top Label");
		content.add(topLabel, constraints);
		
		// button
		constraints.gridy++;
		JButton button = new JButton("Show/Hide");
		button.addActionListener(this);
		content.add(button, constraints);
		
		// invisible area
		constraints.gridy++;
		invisibleArea = new JPanel();
		invisibleArea.setBorder( BorderFactory.createEtchedBorder() );
		JLabel hiddenLabel = new JLabel("hidden text");
		invisibleArea.setVisible(false);
		invisibleArea.add(hiddenLabel);
		content.add(invisibleArea, constraints);
		
		// add label
		constraints.gridy++;
		JLabel bottomLabel = new JLabel("Bottom Label");
		content.add(bottomLabel, constraints);
		
		pack();
		setVisible( true );
	}
	
	public static void main ( String[] args ){
		new ProblemDemo();
	}

	public void actionPerformed(ActionEvent e) {
		if ( invisibleArea.isVisible() )
			invisibleArea.setVisible(false);
		else
			invisibleArea.setVisible(true);
	}
}
 

Schandro

Top Contributor
ruf mal pack und revalidate auf das Fenster auf nach dem sichtbar/unsichtbar machen. Wobei es wahrscheinlich besser wäre das pack wegzulassen und das Fenster von Anfang an groß genug zu machen.
 

cyclohexan

Mitglied
Hey, vielen Dank, pack() hat geholfen.
Ein revalidate() gibt es allerdings nicht, nur ein validate(), und das war nicht nötig.

Warum meinst du, dass es besser wäre, pack() wegzulassen?
 

Schandro

Top Contributor
Strimmt, das validate wird ja automatisch durch das pack gemacht, hatte ich vergessen, deswegen bringt es nichts. Falls du aber das pack weglässt brauchst du das validate wieder.

Ob man das pack weglassen will kommt auf die GUI und den User drauf an, das Problem ist dann ja nämlich das die Fenstergröße die eventuell vom User per Hand verändert wurde einfach per Buttondruck wieder verändert wird was eventuell nervig sein könnte, aber wie gesagt kommt drauf an und ist Geschmackssache.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F GridBag Layout AWT, Swing, JavaFX & SWT 1
D LayoutManager GridBag | weight nachträglich ändern AWT, Swing, JavaFX & SWT 3
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
H LayoutManager Gridbag Constraint AWT, Swing, JavaFX & SWT 2
A Nochmals Problem mit GridBag AWT, Swing, JavaFX & SWT 5
A GridBag-Layout AWT, Swing, JavaFX & SWT 2
W Elemente aus JPanel bzw. GridBag löschen und ersetzen AWT, Swing, JavaFX & SWT 18
D (GridBag)Layoutproblem - Komponentenbreite AWT, Swing, JavaFX & SWT 2
O GridBag IN BorderLayout? AWT, Swing, JavaFX & SWT 5
R JTextField im GridBag ändert seine Größe nicht AWT, Swing, JavaFX & SWT 11
R Ausrichtung am oberen Rand beim Gridbag-Layout AWT, Swing, JavaFX & SWT 2
U ein nettes gridbag layout AWT, Swing, JavaFX & SWT 3
A Gridbag Mensch gesucht! AWT, Swing, JavaFX & SWT 2
A GridBag-Layout AWT, Swing, JavaFX & SWT 2
B gridbag-layout mit swing AWT, Swing, JavaFX & SWT 37
E Problem mit GridBag Layout AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
P JFrame Location-/Size-Probleme AWT, Swing, JavaFX & SWT 5
U LayoutManager Probleme mit Layouts AWT, Swing, JavaFX & SWT 5
C 3 kleine Probleme... AWT, Swing, JavaFX & SWT 13
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
A Probleme mit 2 JFrames in einem Programm AWT, Swing, JavaFX & SWT 7
K LayoutManager Probleme mit 2 Komponenten AWT, Swing, JavaFX & SWT 9
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
M Probleme mit Verkleinern eines GUI AWT, Swing, JavaFX & SWT 7
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Probleme mit (Graphics g) II AWT, Swing, JavaFX & SWT 4
F Probleme mit (Graphics g) AWT, Swing, JavaFX & SWT 3
K 2D-Grafik .GIF macht mir Probleme AWT, Swing, JavaFX & SWT 14
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
T JTable Graphik probleme AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben