GridBagLayout-Problem

mokelet

Mitglied
Hi,

ich hoffe mal, ich kann euch mein Problem näherbringen.

Also das Layout soll folgendermaßen aussehen:

layout0dwtkrp9.png


Die Randnummerierung sollte mir helfen, das ganze einfach einzugrenzen

Und so sieht es aus:

layout2pxai5dr3.png


B und C sind also neben G sollten aber unten Links sein. Nach dem Code und der Zeichnung sollten die Angaben aber so stimmen. Wenn ich A eine height von 4 gebe überdeckt er B und C.
Ich hoffe mir kann da jemand helfen. der Code steht unten. A ist dabei das oberste Element. Dann B und so weiter.

Java:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.TextArea;
import java.util.Vector;

import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class ProjectPanel extends JPanel {

	private static final int EDGE = 1;
	private static final String NEW_PROJECT = "Neues Projekt: ";
	private static final String NEW_NEXT_ACTION = "Neue Aktion: ";

	private Vector<String> m_mainVector;
	private Vector<String> m_sideVector;
	private JList m_jListMain;
	private JList m_jListSide;
	private JScrollPane m_jScrollMain;
	private JScrollPane m_jScrollSide;
	private JLabel m_newProject, m_newNextAction;
	private JTextField m_newProjectTF, m_newNextActionTF;
	private TextArea m_noteArea;
	private GridBagConstraints gbcMainlist, gbcSidelist, gbcNoteArea, gbcNewProject, gbcNewProjectTF, gbcNewNextAction, gbcNewNextActionTF;

	public ProjectPanel() {
		setLayout(new GridBagLayout());
		m_mainVector = filledMainVector();
		m_sideVector = filledSideVector();
		m_jListMain = new JList(m_mainVector);
		m_jListSide = new JList(m_sideVector);

		// Add Mainlist to Panel
		m_jScrollMain = new JScrollPane();
		m_jScrollMain.setViewportView(m_jListMain);
		gbcMainlist = new GridBagConstraints();
		gbcMainlist.fill = GridBagConstraints.BOTH;
		gbcMainlist.gridx = 0;
		gbcMainlist.gridy = 0;
		gbcMainlist.gridwidth = 2;
		gbcMainlist.gridheight = 3;
		gbcMainlist.weightx = 1;
		gbcMainlist.weighty = 1;
		gbcMainlist.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_jScrollMain, gbcMainlist);
		
		// Add Label m_newProject to Panel
		m_newProject = new JLabel(NEW_PROJECT);
		gbcNewProject = new GridBagConstraints();
		gbcNewProject.fill = GridBagConstraints.HORIZONTAL;
		gbcNewProject.gridx = 0;
		gbcNewProject.gridy = 3;
		gbcNewProject.gridwidth = 1;
		gbcNewProject.gridheight = 1;
		gbcNewProject.weightx = 0;
		gbcNewProject.weighty = 0;
		gbcNewProject.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_newProject, gbcNewProject);
		
		// Add TextField m_newProjectTF to Panel
		m_newProjectTF = new JTextField();
		gbcNewProjectTF = new GridBagConstraints();
		gbcNewProjectTF.fill = GridBagConstraints.HORIZONTAL;
		gbcNewProjectTF.gridx = 1;
		gbcNewProjectTF.gridy = 3;
		gbcNewProjectTF.gridwidth = 1;
		gbcNewProjectTF.gridheight = 1;
		gbcNewProjectTF.weightx = 0;
		gbcNewProjectTF.weighty = 0;
		gbcNewProjectTF.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_newProjectTF, gbcNewProjectTF);

		// Add Sidelist to Panel
		m_jScrollSide = new JScrollPane();
		m_jScrollSide.setViewportView(m_jListSide);
		gbcSidelist = new GridBagConstraints();
		gbcSidelist.fill = GridBagConstraints.BOTH;
		gbcSidelist.gridx = 2;
		gbcSidelist.gridy = 0;
		gbcSidelist.gridwidth = 2;
		gbcSidelist.gridheight = 1;
		gbcSidelist.weightx = 1;
		gbcSidelist.weighty = 1;
		gbcSidelist.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_jScrollSide, gbcSidelist);
		
		// Add Label m_newNextAction to Panel
		m_newNextAction = new JLabel(NEW_NEXT_ACTION);
		gbcNewNextAction = new GridBagConstraints();
		gbcNewNextAction.fill = GridBagConstraints.HORIZONTAL;
		gbcNewNextAction.gridx = 2;
		gbcNewNextAction.gridy = 1;
		gbcNewNextAction.gridwidth = 1;
		gbcNewNextAction.gridheight = 1;
		gbcNewNextAction.weightx = 0;
		gbcNewNextAction.weighty = 0;
		gbcNewNextAction.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_newNextAction, gbcNewNextAction);
		
		// Add TextField m_newNextActionTF to Panel
		m_newNextActionTF = new JTextField();
		gbcNewNextActionTF = new GridBagConstraints();
		gbcNewNextActionTF.fill = GridBagConstraints.HORIZONTAL;
		gbcNewNextActionTF.gridx = 3;
		gbcNewNextActionTF.gridy = 1;
		gbcNewNextActionTF.gridwidth = 1;
		gbcNewNextActionTF.gridheight = 1;
		gbcNewNextActionTF.weightx = 0;
		gbcNewNextActionTF.weighty = 0;
		gbcNewNextActionTF.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_newNextActionTF, gbcNewNextActionTF);

		// Add NoteArea to Panel
		m_noteArea = new TextArea("Note");
		gbcNoteArea = new GridBagConstraints();
		gbcNoteArea.fill = GridBagConstraints.BOTH;
		gbcNoteArea.gridx = 2;
		gbcNoteArea.gridy = 2;
		gbcNoteArea.gridwidth = 2;
		gbcNoteArea.gridheight = 2;
		gbcNoteArea.weightx = 1;
		gbcNoteArea.weighty = 1;
		gbcNoteArea.insets = new Insets(EDGE, EDGE, EDGE, EDGE);
		add(m_noteArea, gbcNoteArea);
	}

	protected Vector<String> filledMainVector() {
		Vector<String> pl = new Vector<String>();
		pl.add("Wäsche Waschen");
		pl.add("Müll entsorgen");
		pl.add("Steuer machen");
		pl.add("Auto waschen");
		pl.add("Mutter bei Papiergram helfen");
		return pl;
	}

	/**
	 * 
	 * @return
	 */
	protected Vector<String> filledSideVector() {
		Vector<String> pl = new Vector<String>();
		pl.add("Papiere sortieren");
		pl.add("Ältere Unterlagen ausmisten");
		pl.add("Papiere einheften");
		return pl;
	}

	public Vector<String> getM_mainVector() {
		return m_mainVector;
	}

	public void setM_mainVector(Vector<String> mMainVector) {
		m_mainVector = mMainVector;
	}

	public Vector<String> getM_sideVector() {
		return m_sideVector;
	}

	public void setM_sideVector(Vector<String> mSideVector) {
		m_sideVector = mSideVector;
	}

	public JList getM_jListMain() {
		return m_jListMain;
	}

	public void setM_jListMain(JList mJListMain) {
		m_jListMain = mJListMain;
	}

	public JList getM_jListSide() {
		return m_jListSide;
	}

	public void setM_jListSide(JList mJListSide) {
		m_jListSide = mJListSide;
	}

	public JScrollPane getM_jScrollMain() {
		return m_jScrollMain;
	}

	public void setM_jScrollMain(JScrollPane mJScrollMain) {
		m_jScrollMain = mJScrollMain;
	}

	public JScrollPane getM_jScrollSide() {
		return m_jScrollSide;
	}

	public void setM_jScrollSide(JScrollPane mJScrollSide) {
		m_jScrollSide = mJScrollSide;
	}

	public TextArea getM_noteArea() {
		return m_noteArea;
	}

	public void setM_noteArea(TextArea mNoteArea) {
		m_noteArea = mNoteArea;
	}

}
 
Zuletzt bearbeitet:

nrg

Top Contributor
sind das alles label?

btw: ist auch vorteilhaft den ganzen code zu posten. wenn das der konstruktor deiner vom jframe erbenden klasse ist, kann mans leicht nachbauen aber wenn du alles postest, reicht c&p und wir sehen, was du bis jetzt gemacht hast
 

mokelet

Mitglied
OK, jetzt sollte aber alles da sein ^^

Java:
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;

public class MainFrame{

	private JFrame m_JFrame = new JFrame();
	private JMenuBar m_JMenubar = new JMenuBar();
	private JTabbedPane M_JTabbedPane = new JTabbedPane();
	private JMenu m_fileMenu = new JMenu("Datei");
	private JMenu m_helpMenu = new JMenu("Hilfe");
	private JMenuItem m_AboutTheProgramm = new JMenuItem("Über das Programm");
	private Icon m_Projektliste = new ImageIcon(
			"images/toolbaricons/speichern.gif");

	public MainFrame() {
		
		configJFrame();
		configJMenuBar();
		configJTabbedPane();
		m_JFrame.setJMenuBar(m_JMenubar);
		m_JFrame.add(M_JTabbedPane);
		m_JFrame.pack();
		m_JFrame.setSize(1024, 768);
		m_JFrame.setVisible(true);
	}

	private void configJFrame() {
		m_JFrame = new JFrame();
		m_JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	private void configJMenuBar() {
		m_JMenubar.add(m_fileMenu);
		m_JMenubar.add(m_helpMenu);
		m_helpMenu.add(m_AboutTheProgramm);
	}

	private void configJTabbedPane() {

		ProjectPanel jp = new ProjectPanel();
		M_JTabbedPane.addTab("Projektliste", m_Projektliste, jp,
				"Liste aller Projekte");
		M_JTabbedPane.addTab("Kontext-Liste", new JTextArea());
		M_JTabbedPane.addTab("Checkliste", new JTextArea());
		M_JTabbedPane.addTab("Routinen", new JTextArea());
	}

	public static void main(String[] args) {
		new MainFrame();
	}

}
 

mokelet

Mitglied
Mist, da hatte ich grad etwas rumgespielt ^^. Aber du siehst, dass unten die rechte TextArea net bis ganz nach unten geht. Wenn du jetzt Height bei dem Teil um eins erhöhst, dann siehts aus wie oben
 

kirax

Bekanntes Mitglied
Du könntest es auch mit Verschachteln probieren:

Fasse links die Projektliste, "Neues Projekt" und das TextField in ein Panel (GridBagLayout) zusammen und füge das als ein einzelnes Objekt in das JFrame ein.
Das gleiche dann noch rechts.
Dann hast du im "untersten" GridBagLayout nur 2 Elemente drin und über weightx regelst du das Verhältnis zwischen den beiden.

Ich krieg bei GridBag auch nicht immer das hin was ich will... dann verschachtle ich das ;)
 
Zuletzt bearbeitet:

mokelet

Mitglied
Danke, genau so hab ich es gerade schon gelöst ^^.
Ich füge es nur vorher zu einem Hauptpanel zusammen und dann packe ich es in das JFrame
 

Suinos

Bekanntes Mitglied
Wieso sich immer diese Mühe mit dem GridBagLayout machen, wenn sich das Design doch allein mit BorderLayout & GridLayout lösen lässt?
Oder bin ich hier der einzige, der dies viel einfacher findet? :/

Java:
public static void main(String... args) throws Exception
{
	JFrame frame = new JFrame("Test");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	JPanel content = new JPanel(new GridLayout(1, 0));
	
	JPanel a = new JPanel();
	a.setBackground(Color.decode("#aaaaaa"));
	
	JPanel b = new JPanel();
	b.setBackground(Color.decode("#bbbbbb"));
	
	JPanel c = new JPanel();
	c.setBackground(Color.decode("#cccccc"));
	
	JPanel d = new JPanel();
	d.setBackground(Color.decode("#dddddd"));
	
	JPanel e = new JPanel();
	e.setBackground(Color.decode("#eeeeee"));
	
	JPanel f = new JPanel();
	f.setBackground(Color.decode("#ffffff"));
	
	JPanel g = new JPanel();
	g.setBackground(Color.decode("#000000"));
	
	JPanel bc = new JPanel(new GridLayout(1, 0));
	bc.add(b);
	bc.add(c);
	
	JPanel abc = new JPanel(new BorderLayout());
	abc.add(a, BorderLayout.CENTER);
	abc.add(bc, BorderLayout.SOUTH);
	
	content.add(abc);
	
	JPanel ef = new JPanel(new GridLayout(1, 0));
	ef.add(e);
	ef.add(f);
	
	JPanel def = new JPanel(new BorderLayout());
	def.add(d, BorderLayout.CENTER);
	def.add(ef, BorderLayout.SOUTH);
	
	JPanel defg = new JPanel(new GridLayout(0, 1));
	defg.add(def);
	defg.add(g);
	
	content.add(defg);
	
	frame.add(content);
	frame.pack();
	frame.setVisible(true);
}

(Bild im Anhang)

Die Grösse der einzelnen Panels wird sich automatisch vergrössern, sobald grössere Komponenten hinzugefügt werden.
 

Anhänge

  • design.JPG
    design.JPG
    6,9 KB · Aufrufe: 35

mokelet

Mitglied
Hi,

und Danke für den Hinweis. Habe es jetzt wie gesagt anders gelöst, aber dein Weg ist auch nicht schlecht. Ich sehe meins mal als Übung an, falls mal komplexere Strukturen auftreten sollten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Gridbaglayout Problem Java Basics - Anfänger-Themen 2
J Problem mit GridBagLayout und JPanel Java Basics - Anfänger-Themen 4
M Problem mit Aktualisierung von GridBagLayout Java Basics - Anfänger-Themen 2
M Problem mit GridBagLayout Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
B Image laden im GridBagLayout Java Basics - Anfänger-Themen 3
A GridBagLayout Fehler Java Basics - Anfänger-Themen 7
B GridBagLayout in der oberen rechten Ecke starten statt mittig Java Basics - Anfänger-Themen 2
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
J Gridbaglayout Java Basics - Anfänger-Themen 2
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
K GridBagLayout Java Basics - Anfänger-Themen 7
L Fenster winzig klein durch GridBagLayout Java Basics - Anfänger-Themen 3
R GridBagLayout funktioniert nicht Java Basics - Anfänger-Themen 3
Y add Funktion für GridBagLayout zeigt Button nicht an Java Basics - Anfänger-Themen 3
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
S GridBagLayout neue Objekte hinzufügen Java Basics - Anfänger-Themen 3
N JPanel - Gridbaglayout Java Basics - Anfänger-Themen 11
T GridBagLayout Autoanpassung Java Basics - Anfänger-Themen 6
X GridBagLayout Komponenten Anordnungsproblem Java Basics - Anfänger-Themen 4
S JTable in GridBagLayout zwingen Java Basics - Anfänger-Themen 2
S GridBagLayout: Problemchen Java Basics - Anfänger-Themen 2
Antoras weightx bei GridBagLayout Java Basics - Anfänger-Themen 2
C GridBagLayout Java Basics - Anfänger-Themen 6
J JButtons mit GridBagLayout anordnen Java Basics - Anfänger-Themen 9
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
G GridBagLayout und JTable Java Basics - Anfänger-Themen 2
N GridBagLayout: gleichmäßige verteilung von Komponenten Java Basics - Anfänger-Themen 23
D GridbagLayout Java Basics - Anfänger-Themen 16
G GridBagLayout Java Basics - Anfänger-Themen 3
G GridBagLayout einstellen Java Basics - Anfänger-Themen 5
W GridBagLayout und JTable Java Basics - Anfänger-Themen 4
C GridBagLayout BIld an variabler Stelle einfügen Java Basics - Anfänger-Themen 2
K Gridbaglayout, wie geht das? Java Basics - Anfänger-Themen 2
D GridBagLayout Java Basics - Anfänger-Themen 2
G GridBagLayout -> Wie werden Elemente "zentriert&quot Java Basics - Anfänger-Themen 7
D GridBagLayout Java Basics - Anfänger-Themen 4
T ungewollte zentrierte Ausrichtung im Gridbaglayout Java Basics - Anfänger-Themen 5
R GridBagLayout und JTextField: Textfeld ist viel zu schmal Java Basics - Anfänger-Themen 4
C Size JTextField in GridBagLayout Java Basics - Anfänger-Themen 2
J image im gridbaglayout? Java Basics - Anfänger-Themen 2
H GridBagLayout Java Basics - Anfänger-Themen 2
C Button in GridBagLayout einstellen Java Basics - Anfänger-Themen 4
K GridBagLayout, JFrame und Scrollen Java Basics - Anfänger-Themen 4
G GridBagLayout Java Basics - Anfänger-Themen 5
ShapeShifter GridBagLayout Java Basics - Anfänger-Themen 7
M GridBagLayout und enthaltende komponenten Java Basics - Anfänger-Themen 5
G GridBagLayout wie? Grundgerüst leicht komplex. Java Basics - Anfänger-Themen 2
G Linie/Gitter in GridBagLayout Java Basics - Anfänger-Themen 4
G GridBagLayout: Verständnisproblem Java Basics - Anfänger-Themen 5
P GridBagLayout Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben