Automatische Anpassung eines JPanels in einem JFrame

Status
Nicht offen für weitere Antworten.

ManInBlack

Aktives Mitglied
Hallo,

ich suche jetzt schon seit Tagen und Wochen nach einer Lösung.

Ich habe ein Programm, mit folgender Struktur: (von unten nach oben)
JTable --> JScrollPane --> JPanel --> JFrame

Das JFrame wurde mit Hilfe GridBagLayout aufgebaut.

Nun zu meinem Problem:

Wenn man das JPanel alleine startet und maximiert, wird auch die JTable dementsprechend
vergrößert. Das selbe Ergebnis möchte ich auch im JFrame (Hauptfenster) erreichen.
Bisher wird das JPanel im JFrame nur in die Mitte positioniert und die Größe des JPanels
bleibt gleich.

Möglicherweise fehlen mir noch Kenntnisse, wie das GridBagLayout zu verwenden ist.
Leider habe ich trotz Tutorials und Anleitungen, das nicht hinbekommen.

Hier ist der Quellcode zu einem Programm, das mein Problem darstellt:

Klasse Fenster (JFrame)
Code:
package p15;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;

public class Fenster extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private Panel panel = null;

	/**
	 * This is the default constructor
	 */
	public Fenster() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.insets = new Insets(34, 55, 35, 41);
			gridBagConstraints.gridy = 0;
			gridBagConstraints.ipadx = -257;
			gridBagConstraints.ipady = -315;
			gridBagConstraints.gridx = 0;
			jContentPane = new JPanel();
			jContentPane.setLayout(new GridBagLayout());
			jContentPane.add(getPanel(), gridBagConstraints);
		}
		return jContentPane;
	}

	/**
	 * This method initializes panel	
	 * 	
	 * @return p15.Panel	
	 */
	private Panel getPanel() {
		if (panel == null) {
			panel = new Panel();
		}
		return panel;
	}

	public static void main(String[] args) {
		Fenster fe = new Fenster();
		fe.setVisible(true);
	}
}

Klasse Panel (JPanel):

Code:
package p15;

import java.awt.GridBagLayout;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.GridBagConstraints;

public class Panel extends JPanel {

	private static final long serialVersionUID = 1L;
	private JScrollPane jScrollPane = null;
	private JTable jTable = null;

	// Die Daten für das Table 
    String[][] data = new String[][]{ 
          {"a", "b", "c", "d"}, 
          {"e", "f", "g", "h"}, 
          {"i", "j", "k", "l"} 
    }; 
     
    // Die Column-Titles 
    String[] title = new String[]{ 
          "A", "B", "C", "D" 
    }; 
	/**
	 * This is the default constructor
	 */
	public Panel() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		GridBagConstraints gridBagConstraints = new GridBagConstraints();
		gridBagConstraints.fill = GridBagConstraints.BOTH;
		gridBagConstraints.gridy = 0;
		gridBagConstraints.weightx = 1.0;
		gridBagConstraints.weighty = 1.0;
		gridBagConstraints.gridx = 0;
		this.setSize(300, 200);
		this.setLayout(new GridBagLayout());
		this.add(getJScrollPane(), gridBagConstraints);
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable(data, title );
		}
		return jTable;
	}

}


Wäre klasse, wenn mir jemand weiterhelfen könnte.

Vielen Dank

vg
ManInBlack
 

Marco13

Top Contributor
Bin nicht ganz sicher was du meinst... sowas

jContentPane.setLayout(new GridLayout(1,1));
jContentPane.add(getPanel());


!?
 

ManInBlack

Aktives Mitglied
Hi Marco,

danke für deine Antwort.
Das ist genau das, was ich erreichen möchte.

Das Problem ist jetzt nur noch, dass ich das GridbagLayout nicht verändern
kann. Da ich eine komplexere GUI Struktur habe, mit mehreren JButtons &
JLabels.

Hast du eine Idee, wie man den selben Effekt erzielen kann, trotz Verwendung
des GridbagLayouts?

Gruß
 

ManInBlack

Aktives Mitglied
Ich habs herausgefunden :)

Hab noch vergessen zu erwähnen, dass ich innerhalb des GridBagLayouts, GridBagConstraints einsetze,
die mir JPanels, JButtons und JLabels formatieren.

Mit Hilfe der fill Methode, wird bei maximieren/minimieren auch die Größe des JPanels innerhalb des JFrames angepasst.

gridBagConstraints.fill = GridBagConstraints.BOTH;

Was mich wundert, wenn ich nun das mit VERTICAL verwendet klappt es nicht.
(gridBagConstraints.fill = GridBagConstraints.VERTICAL;)
Normalerweise müsste doch durch diese Funktion, in die Verticale maximiert werden, oder?

vg
ManInBlack
 
G

Guest

Gast
Hallo L-ectron-X, (und auch andere GridbagLayout-Profis) :)

für was ist denn Genau die Gewichtung?
Hab ich das richtig verstanden, dass man die Gewichtigung nur dann verwendet, wenn man flexible und nicht flexible Komponenten steuern möchte.
Ich glaub du hast mal in einem Beitrag geschrieben,
wenn eine Komponente fix sein soll, dann: weightx/weighty auf 100.0 setzen, ansonsten auf 1.0
Ist das richtig?

Könntest du bitte mal überprüfen, ob ich das richtig sehe:

1) Man legt als erstes ein GridBagLayout an, und das z.B. in eine ScrollPane
über jContentPane.setLayout(new GridBagLayout());

2) Man könnte eine GridBagConstraints anlegen um verschiedene Formate für die Komponente(z.b.Jpanel) anzulegen
über
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
3)
Ein paar Variablen, die man anschließend verwenden kann, um das gridBagConstraints detailierter zu formatieren:

- gridBagConstraints3.insets = new Insets(5, 0, 0, 0);
Formatierung innerhalb einer Zelle (top,left,bottom, right)

- gridBagConstraints3.fill = GridBagConstraints.BOTH;
Bei Maximieren des Objects(JPanels), dann wird durch fill, in jede Richtung gestreckt

- gridBagConstraints3.gridy = 3;
gridBagConstraints3.gridx = 0;
Angabe der Einsprechenden Zelle, wo das Object liegen soll (x,y)

- gridBagConstraints3.gridwidth = 2; (In vielen Zellen soll das Object liegen, x-Achse / vertikal)
gridBagConstraints3.gridheigth = 1; ( In vielen Zellen soll das Object liegen, y-Achse / horizontal)

gridBagConstraints3.gridwidth = GridBagConstraints.REMAINDER <--- ????? keine Ahnung, für was das zu verwenden ist?

- Angabe der Mindesgröße, der entsprechenden Komponente (Object) in Pixel

gridBagConstraints3.ipadx = 1010;
gridBagConstraints3.weightx = 100.0;

- Gewichtung, für was?
Ich glaube, um eine Object flexible bzw. als fix zu instanzieren

4) Man fügt gridBagConstraints der jContentPane hinzu
über jContentPane.add(getJTextFieldAusgabe(), gridBagConstraints3);


Diese Beschreibungn sind umgangssprachlich formuliert, so wie ich es mir gemerkt habe. Stimmen diese Informationen?
Gibt es noch andere wichtige Variablen für gridBagConstraints, die unabdingbar sind?


Wäre super, wenn sich viele hier beteiligen könnten. Und vielleicht kommt eine kleine Zusammenfassung zustande, wie man
das GridbagLayout verwendet. Es gibt im Netz zwar schon reichlich Informationen zu GridbagLayout, aber leider hab ich noch
kein Tutorial gefunden, wo man das nicht ganz leichte Layout mit simplen Worten erlernen kann.



Vielen Dank

Gruß
 
G

Guest

Gast
Hallo L-ectron-X, (und auch andere GridbagLayout-Profis) :)

für was ist denn Genau die Gewichtung?
Hab ich das richtig verstanden, dass man die Gewichtigung nur dann verwendet, wenn man flexible und nicht flexible Komponenten steuern möchte.
Ich glaub du hast mal in einem Beitrag geschrieben,
wenn eine Komponente fix sein soll, dann: weightx/weighty auf 100.0 setzen, ansonsten auf 1.0
Ist das richtig?

Könntest du bitte mal überprüfen, ob ich das richtig sehe:

1) Man legt als erstes ein GridBagLayout an, und das z.B. in eine ScrollPane
über jContentPane.setLayout(new GridBagLayout());

2) Man könnte eine GridBagConstraints anlegen um verschiedene Formate für die Komponente(z.b.Jpanel) anzulegen
über
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
3)
Ein paar Variablen, die man anschließend verwenden kann, um das gridBagConstraints detailierter zu formatieren:

- gridBagConstraints3.insets = new Insets(5, 0, 0, 0);
Formatierung innerhalb einer Zelle (top,left,bottom, right)

- gridBagConstraints3.fill = GridBagConstraints.BOTH;
Bei Maximieren des Objects(JPanels), dann wird durch fill, in jede Richtung gestreckt

- gridBagConstraints3.gridy = 3;
gridBagConstraints3.gridx = 0;
Angabe der Einsprechenden Zelle, wo das Object liegen soll (x,y)

- gridBagConstraints3.gridwidth = 2; (In vielen Zellen soll das Object liegen, x-Achse / vertikal)
gridBagConstraints3.gridheigth = 1; ( In vielen Zellen soll das Object liegen, y-Achse / horizontal)

gridBagConstraints3.gridwidth = GridBagConstraints.REMAINDER <--- ????? keine Ahnung, für was das zu verwenden ist?

- Angabe der Mindesgröße, der entsprechenden Komponente (Object) in Pixel

gridBagConstraints3.ipadx = 1010;
gridBagConstraints3.weightx = 100.0;

- Gewichtung, für was?
Ich glaube, um eine Object flexible bzw. als fix zu instanzieren

4) Man fügt gridBagConstraints der jContentPane hinzu
über jContentPane.add(getJTextFieldAusgabe(), gridBagConstraints3);


Diese Beschreibungn sind umgangssprachlich formuliert, so wie ich es mir gemerkt habe. Stimmen diese Informationen?
Gibt es noch andere wichtige Variablen für gridBagConstraints, die unabdingbar sind?


Wäre super, wenn sich viele hier beteiligen könnten. Und vielleicht kommt eine kleine Zusammenfassung zustande, wie man
das GridbagLayout verwendet. Es gibt im Netz zwar schon reichlich Informationen zu GridbagLayout, aber leider hab ich noch
kein Tutorial gefunden, wo man das nicht ganz leichte Layout mit simplen Worten erlernen kann.



Vielen Dank

Gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 Swing Gridbaglayout - automatische Anpassung verhindern AWT, Swing, JavaFX & SWT 1
S automatische Zeilenhöhen Anpassung bei JTable AWT, Swing, JavaFX & SWT 2
A Automatische anpassung im NullLayout AWT, Swing, JavaFX & SWT 10
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
H automatische Anzahl der Spalten ermitteln -> geht nicht AWT, Swing, JavaFX & SWT 6
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
I JAVAFX - CSS - automatische Property- und Methoden-Vorlagen in Eclipse AWT, Swing, JavaFX & SWT 17
F Textfeld Währungszahlen und automatische Aktualisierung AWT, Swing, JavaFX & SWT 14
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
J ungewollt-automatische Größenänderung von JLabel AWT, Swing, JavaFX & SWT 5
N JEditorPane und automatische Scrollposition AWT, Swing, JavaFX & SWT 2
B Automatische Größenanpassung AWT, Swing, JavaFX & SWT 7
K Automatische Skalierung von GUI Elementen (Java Swing) AWT, Swing, JavaFX & SWT 2
N automatische Auswahl einer JComboBox AWT, Swing, JavaFX & SWT 6
C Automatische Screenshots + Analyse des Bildes AWT, Swing, JavaFX & SWT 5
aze GridLayout: Keine automatische Ausdehnung AWT, Swing, JavaFX & SWT 2
A AWT Automatische Weiterleitung? AWT, Swing, JavaFX & SWT 13
L JTable automatische Spaltenbreite AWT, Swing, JavaFX & SWT 2
G JPanel automatische Größ AWT, Swing, JavaFX & SWT 4
C JSplitPane automatische Veränderung verbieten. AWT, Swing, JavaFX & SWT 3
T Automatische Grössenanpassung JPanel / JScrollpane AWT, Swing, JavaFX & SWT 3
G GridBagLayout - automatische Größenanpassung AWT, Swing, JavaFX & SWT 3
L jTextField mit automatische Suchfunktion? AWT, Swing, JavaFX & SWT 2
A Automatische Scrollbalken bei einem JFrame AWT, Swing, JavaFX & SWT 8
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
J Java - dynamische Anpassung an Fenstergröße? AWT, Swing, JavaFX & SWT 4
K JTable +TableModel --> Anpassung der Tabellengröße (Zeilenanzahl) AWT, Swing, JavaFX & SWT 3
C Anpassung von JLabel Größe AWT, Swing, JavaFX & SWT 4
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
G Größe JLabel anpassung an Textlänge AWT, Swing, JavaFX & SWT 3
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
Splayfer Umrandung eines AttributedStrings AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L JavaFX Validierung eines Spinner AWT, Swing, JavaFX & SWT 1
M Builden eines lauffähigen JAR Files AWT, Swing, JavaFX & SWT 3
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
M JavaFX rotieren eines Kreises mit konstanter Geschwindigkeit AWT, Swing, JavaFX & SWT 1
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
M JavaFX Auf ein UI Elemement eines anderen Controllers zugreifen AWT, Swing, JavaFX & SWT 0
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
D LookAndFeel Überschreiben eines UIDelegate AWT, Swing, JavaFX & SWT 0
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
B Swing Wie Witdh und Height eines GuiElements bekommen AWT, Swing, JavaFX & SWT 5
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
T Nur bestimmte Bereiche eines Fotos bearbeiten AWT, Swing, JavaFX & SWT 0
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
O Swing Aufbau eines JFrames AWT, Swing, JavaFX & SWT 2
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
javampir Swing Wanderung eines JFrames AWT, Swing, JavaFX & SWT 7
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben