GridbagLayout positionierungsproblem

aha_01

Aktives Mitglied
Hi,
ich habe folgendes Programm:
Java:
package tasksEditorPack;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class TasksEditor {

	/**  The global tabbed pane*/
	private static JTabbedPane tabbedPane = new JTabbedPane();

	/**
	 * Adds components to the gridbaglayout
	 * @param cont
	 * @param gbl
	 * @param c
	 * @param x
	 * @param y
	 * @param width
	 * @param height
	 * @param weightx
	 * @param weighty
	 */
	static void addComponent(Container cont, GridBagLayout gbl, Component c,
			int x, int y, int width, int height, double weightx, double weighty) {
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridx = x;
		gbc.gridy = y;
		gbc.gridwidth = width;
		gbc.gridheight = height;
		gbc.weightx = weightx;
		gbc.weighty = weighty;
		// gbc.insets = new Insets(2,2,2,2);//margin:2px;
		//gbc.anchor = GridBagConstraints.NORTH;//.SOUTHWEST;
		gbl.setConstraints(c, gbc);
		cont.add(c);
	}

	/**
	 * Adds tabbed panes
	 * @param cont
	 * @param tabName
	 * @return
	 */
	static JPanel add_tabb(Container frameCont, String tabName) {
		// Create one content pane of the tab
		JPanel TabContPane = new JPanel(); TabContPane.setName("TabContPane");
		// Add content's pane to the Tab and set the selected index
		tabbedPane.addTab(tabName, TabContPane);
		tabbedPane.setSelectedIndex(0);
		// Style the tab
		UIManager.put("TabbedPane.selected", new Color(0xA7C0E5));
		// Add the tab to the container
		frameCont.add(tabbedPane, BorderLayout.CENTER);
		return TabContPane;
	}
	
	static void createNewTask(Container cont, GridBagLayout gbl) {
		//JOptionPane.showMessageDialog(null, "New task was clicked...");
		JTextField jt1 = new JTextField(50);
		JCheckBox chb_sel = new JCheckBox();

		addComponent(cont, gbl, jt1, 0, 1, 6, 1, 0, 0);
		addComponent(cont, gbl, chb_sel, 6, 1, 1, 1, 0, 0);

	}

	/** @param args */
	public static void main(String[] args) {
		/** Declarations */
		JFrame frame = new JFrame(); 
		Container fcont = frame.getContentPane();
		JTextField jt1 = new JTextField(50);
		JCheckBox chb_sel = new JCheckBox();
		JButton butNew = new JButton("Add new task");
		JButton butEdit = new JButton("Edit tasks");
		JButton butDel = new JButton("Delete task");
		JButton butDeactiv = new JButton("Deactivate task");
		JButton butDone = new JButton("Task done");
		final GridBagLayout gbl = new GridBagLayout();
		final JPanel tabPane1 = add_tabb(fcont, "Task editor");
		add_tabb(fcont, "Other Tab");
		JPanel placeHolder = new JPanel();
		JPanel placeHolder2 = new JPanel();
		JPanel placeHolder3 = new JPanel();
		
		/** Initializing */
		tabbedPane.setName("tabbedPane");
		tabPane1.setLayout(gbl);
		frame.setName("MainFrame");
		fcont.setName("MainFContainer");
		chb_sel.setName("chb_sel");//chb_done.setBackground(new
		jt1.setName("jt1");//jt1.setEditable(false); //jt1.setEnabled(false);
		
		/** Styling  */
		fcont.setBackground(Color.DARK_GRAY);
		butNew.setMargin(new Insets(0, 0, 0, 0));
		butNew.setSize(new Dimension(120, 30));
		tabPane1.setBackground(Color.LIGHT_GRAY);
		//tabPane1.setBorder(BorderFactory.createLineBorder(Color.gray));
		//tabPane1.setSize(760, 300);
		
		/** Adding components */
		addComponent(tabPane1, gbl, butNew, 0, 0, 1, 1, 1.0, 0);
		addComponent(tabPane1, gbl, butEdit, 1, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, butDel, 2, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, butDeactiv, 3, 0, 1, 1,0, 0);
		addComponent(tabPane1, gbl, butDone, 4, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, placeHolder, 5, 0, 1, 1, 1.0, 0);
		addComponent(tabPane1, gbl, placeHolder2, 0, 1, 6, 1, 0, 0);
		addComponent(tabPane1, gbl, placeHolder3, 0, 1, 7, 1, 0, 0);
		//addComponent(tabPane1, gbl, jt1, 0, 1, 6, 1, 0, 0);
		//addComponent(tabPane1, gbl, chb_sel, 7, 1, 1, 1, 0, 0);
		
		/** Adding functionalities */
		butNew.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) { 
				createNewTask(tabPane1,gbl);
			}
		});
		
		/** Debuging */
		//System.out.println("tabPane1.getName(): "+tabPane1.getName());
		//System.out.println("tabPane1.getComponentCount(): "+tabPane1.getComponentCount());
		//System.out.println("jt1.getLocation(): "+jt1.getLocation());
		//System.out.println("jt1.getMargin(): "+jt1.getMargin());
		//System.out.println("jt1.getParent(): "+jt1.getParent().getName());
		//System.out.println("jt1.getRootPane(): "+jt1.getRootPane().getName());
		//System.out.println("jt1.getSize(): "+jt1.getSize());
		//System.out.println("jt1.getLayout(): "+jt1.getLayout());
		
		/** Displaying */
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setMinimumSize(new Dimension(670, 200));
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}// MAIN

}

Das Problem ich möchte den Inhalt
Java:
/** Adding components */
		addComponent(tabPane1, gbl, butNew, 0, 0, 1, 1, 1.0, 0);
		addComponent(tabPane1, gbl, butEdit, 1, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, butDel, 2, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, butDeactiv, 3, 0, 1, 1,0, 0);
		addComponent(tabPane1, gbl, butDone, 4, 0, 1, 1, 0, 0);
		addComponent(tabPane1, gbl, placeHolder, 5, 0, 1, 1, 1.0, 0);
		addComponent(tabPane1, gbl, placeHolder2, 0, 1, 6, 1, 0, 0);
		addComponent(tabPane1, gbl, placeHolder3, 0, 1, 7, 1, 0, 0);
nicht in der Mitte haben sondern ganz oben am Start der Tab und ich kriege es irgendwie nicht hin ???:L

Kann Jmd mir bitte sagen was ich hier verkehrt mache oder was ich dafür noch machen soll :eek:

Bem.: Einfach copy and paste den Code. Das ergibt eine GUI :autsch:


Beste Grüße
Aha
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Es war nicht ganz leicht nachzuvollziehen, was du in deinen add_... Funktionen eigentlich machst. Sauberen Stil würde ich das nicht nennen. Zu deinem Problem: Du musst die weighty von deinen Placeholdern unter deinen Buttons auf 1 setzen. Dann drücken die Placeholder quasi die Buttons nach oben.

So hätte das der WindowProBuilder fabriziert, das ist zwar auch nicht das gelbe vom Ei aber doch übersichtlicher als dein code:
Java:
 public static void main(String[] args) {
        /** Declarations */
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(670, 200));
        frame.pack();
        frame.setLocationRelativeTo(null);
        
        JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
        frame.getContentPane().add(tabbedPane, BorderLayout.CENTER);
        
        JPanel panel = new JPanel();
        tabbedPane.addTab("Task tab", null, panel, null);
        GridBagLayout gbl_panel = new GridBagLayout();
        gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0};
        gbl_panel.rowHeights = new int[]{0, 0};
        gbl_panel.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
        gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE};
        panel.setLayout(gbl_panel);
        
        JButton btnNewButton = new JButton("New button");
        GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
        gbc_btnNewButton.insets = new Insets(0, 0, 0, 5);
        gbc_btnNewButton.gridx = 0;
        gbc_btnNewButton.gridy = 0;
        panel.add(btnNewButton, gbc_btnNewButton);
        
        JButton btnNewButton_1 = new JButton("New button");
        GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints();
        gbc_btnNewButton_1.insets = new Insets(0, 0, 0, 5);
        gbc_btnNewButton_1.gridx = 1;
        gbc_btnNewButton_1.gridy = 0;
        panel.add(btnNewButton_1, gbc_btnNewButton_1);
        
        JButton btnNewButton_2 = new JButton("New button");
        GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints();
        gbc_btnNewButton_2.insets = new Insets(0, 0, 0, 5);
        gbc_btnNewButton_2.gridx = 2;
        gbc_btnNewButton_2.gridy = 0;
        panel.add(btnNewButton_2, gbc_btnNewButton_2);
        
        JButton btnNewButton_3 = new JButton("New button");
        GridBagConstraints gbc_btnNewButton_3 = new GridBagConstraints();
        gbc_btnNewButton_3.gridx = 3;
        gbc_btnNewButton_3.gridy = 0;
        panel.add(btnNewButton_3, gbc_btnNewButton_3);
        
        JPanel panel_1 = new JPanel();
        tabbedPane.addTab("New tab", null, panel_1, null);
        frame.setVisible(true);
    }
 
Zuletzt bearbeitet:

aha_01

Aktives Mitglied
Vielen Dank, das hat mir weitergeholfen :toll:
Ich glaube ich muss mich mit dem GUIBuilder ein bisschen beschäftigen :noe:


Schöne Grüße
Aha
 

bERt0r

Top Contributor
Ich wollte dir nur kurz zeigen wies übersichtlicher geht. Der Gui Builder kocht auch nur mit Wasser und macht dann eben anderswo Probleme. Der Gui Buidler bringt nur eine Zeitersparnis, wenn du das gleiche auch manuell hinkriegst.
 

aha_01

Aktives Mitglied
Ja ich bin auch ein Fun davon Alles zu Fuß zu programmieren aber manchmal hilft es auf der Schnelle mit dem GUI Builder die Grundstruktur einer Oberfläche zu machen und dann weiter manuell programmieren ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S GridBagLayout Felder formatieren AWT, Swing, JavaFX & SWT 1
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
C GridbagLayout verstehen lernen AWT, Swing, JavaFX & SWT 1
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
BabySuna darstellungsprobleme mit JTabbedPane und GridBagLayout AWT, Swing, JavaFX & SWT 8
CptK Positionieren von Elementen in GridBagLayout AWT, Swing, JavaFX & SWT 4
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
Mario1409 AWT GridBagLayout AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
T LayoutManager Anordnen der Elemente im GridBagLayout AWT, Swing, JavaFX & SWT 11
K GridBagLayout mit reponsive Design AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
T GridBagLayout Anfängerprobleme AWT, Swing, JavaFX & SWT 3
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
L GridBagLayout Anordnung AWT, Swing, JavaFX & SWT 3
M Gridbaglayout Spaltenbreite AWT, Swing, JavaFX & SWT 3
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
V GridBagLayout AWT, Swing, JavaFX & SWT 4
N LayoutManager GridBagLayout - Grundlagen AWT, Swing, JavaFX & SWT 6
Neumi5694 Swing Gridbaglayout - automatische Anpassung verhindern AWT, Swing, JavaFX & SWT 1
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
M Swing GridBagLayout Komponentengröße festsetzen AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
HarleyDavidson Swing Seltsames Verhalten GridBagLayout AWT, Swing, JavaFX & SWT 11
W GridBagLayout mit fester Zellgrösse AWT, Swing, JavaFX & SWT 2
N Swing GridBagLayout: Ein Pixel Versatz AWT, Swing, JavaFX & SWT 2
B Swing Gridbaglayout unterschiedliche Zeilenhöhe AWT, Swing, JavaFX & SWT 6
H LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 1
N GridBagLayout - was fehlt? AWT, Swing, JavaFX & SWT 8
S Swing rowHeight und rowWeight im GridBagLayout AWT, Swing, JavaFX & SWT 1
N Swing GUI mit GridBagLayout AWT, Swing, JavaFX & SWT 4
A jpanel mit gridbaglayout auf hintergrundbild AWT, Swing, JavaFX & SWT 7
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
G GridBagLayout AWT, Swing, JavaFX & SWT 6
S GridBagLayout "links-rechts-layouten" AWT, Swing, JavaFX & SWT 7
T LayoutManager GridBagLayout / erwartetes Raster fehlt AWT, Swing, JavaFX & SWT 3
X Gridbaglayout gridx + gridy auslesen? AWT, Swing, JavaFX & SWT 7
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
N GridBagLayout - Zeitplan AWT, Swing, JavaFX & SWT 13
N Swing GridbagLayout AWT, Swing, JavaFX & SWT 4
S Swing gridbaglayout AWT, Swing, JavaFX & SWT 8
G GridBagLayout Problem AWT, Swing, JavaFX & SWT 4
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
X LayoutManager gridBagLayout wird nicht richtig Dargestellt AWT, Swing, JavaFX & SWT 5
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
N LayoutManager GridBagLayout schummeln erlaubt ? AWT, Swing, JavaFX & SWT 2
D GridBagLayout AWT, Swing, JavaFX & SWT 9
A Swing GridBagLayout - constraints.anchor scheint nicht korrekt zu funktionieren? AWT, Swing, JavaFX & SWT 7
J Swing Terminkalender Wochenansicht mit Gridbaglayout oder JTable AWT, Swing, JavaFX & SWT 16
C LayoutManager GridBagLayout - Anfängerfrage AWT, Swing, JavaFX & SWT 5
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
R GridBagLayout in GridBagLayout AWT, Swing, JavaFX & SWT 2
H Positionierungsprobleme beim GridBagLayout AWT, Swing, JavaFX & SWT 16
Furtano AWT GridBagLayout macht mir Sorgen AWT, Swing, JavaFX & SWT 3
earlgrey_tea GridBagLayout Componenten proportional vergößern AWT, Swing, JavaFX & SWT 12
D JTable im GridBagLayout -> gridwidth AWT, Swing, JavaFX & SWT 6
T GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
D Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 8
J Swing GridBagLayout: Links-nach-rechts Orientierung statt zentriert AWT, Swing, JavaFX & SWT 12
R Größe eines Labels bei GridBagLayout festlegen AWT, Swing, JavaFX & SWT 9
B GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
M LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 11
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
L LayoutManager GridBagLayout leere Zeilen AWT, Swing, JavaFX & SWT 4
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
N GridBagLayout Problem AWT, Swing, JavaFX & SWT 6
C Swing JTable "zerstört" GridBagLayout AWT, Swing, JavaFX & SWT 9
N LayoutManager GridBagLayout Größe fixieren AWT, Swing, JavaFX & SWT 3
M GridBagLayout AWT, Swing, JavaFX & SWT 7
V Swing Gridbaglayout Leeres Fenster AWT, Swing, JavaFX & SWT 2
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
N GridBagLayout AWT, Swing, JavaFX & SWT 11
D Swing Problem mit Gridbaglayout bzw. Größenanpassung JPanels AWT, Swing, JavaFX & SWT 7
Y Swing GridbagLayout JTextfield zu klein AWT, Swing, JavaFX & SWT 5
L LayoutManager GridBagLayout spielt verrückt AWT, Swing, JavaFX & SWT 9
T LayoutManager GridBagLayout an Fenstergröße anpassen AWT, Swing, JavaFX & SWT 2
J Java GUI mit GridBagLayout AWT, Swing, JavaFX & SWT 3
Y LayoutManager Problem mit Gridbaglayout AWT, Swing, JavaFX & SWT 8
hdi LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 9
W GridBagLayout Falsche Größenanpassung AWT, Swing, JavaFX & SWT 6
R Swing Button-Größe in JPanel mit GridBagLayout nicht änderbar AWT, Swing, JavaFX & SWT 3
E Problem mit meiner GUI/GridbagLayout AWT, Swing, JavaFX & SWT 2
M LayoutManager GradientPaint auf GridBagLayout AWT, Swing, JavaFX & SWT 5
D LayoutManager GridBagLayout, Änderung zur Laufzeit AWT, Swing, JavaFX & SWT 4
G LayoutManager per Button GridBagLayout + Inhalt ändern AWT, Swing, JavaFX & SWT 2
M GridBagLayout zeilenweise füllen AWT, Swing, JavaFX & SWT 5
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
hdi Swing Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 2
E LayoutManager GridBagLayout kurz vorm Wahnsinn! AWT, Swing, JavaFX & SWT 22
P Swing GridBagLayout bleibt nicht so wie es ist :( AWT, Swing, JavaFX & SWT 8
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben