Gridbaglayout und anordnung der elemente

Status
Nicht offen für weitere Antworten.
V

vodn7v

Gast
hallo,
ich habe ein problem mit der anordnung der elemente in meinem fenster. ich kann sie irgendwie nicht richtig positionieren.

hier mein erstes bild:

Java_1

hier das zweite bild:


Java_1


das einzige was die beiden bilder unterscheidet ist das ich im layout 1

"gbc.fill = GridBagConstraints.HORIZONTAL;"

und im layout 2:

"gbc.fill = GridBagConstraints.NONE;" .. verwende..

mein problem ist jetzt das ich wenn ich das wie beim ersten layout habe sich jedes element in der tabelle sich an die größe des größten elementes anpasst.. also wenn ich 5 eingabefelder untereinander habe, uns zb das 1ste 50pixel ist. dann sind alle anderen auch gleich so groß obwohl ich ihnen andere werte gegeben habe.

beim 2ten bleibt die größe so wie ich sie angegeben habe aber irgednwie is alles komisch zentriert. also das sieht alles nicht schön aus.

könnt ihr mir weiterhelfen ???

hier der quelltext:

Code:
public class bestell extends JFrame
{
	/**
	 * 
	 */

	private static final long serialVersionUID = 1L;

	Container c;
	JLabel label1, label2,label3,label_ort;
	JTextField vorname,nachname,strasse,h_nr,ort,plz,firma;
	JButton button,button2,button3;
	
	public  bestell()
	{
		c = getContentPane();
		GridBagLayout gbl = new GridBagLayout();
		GridBagConstraints gbc = new GridBagConstraints();
		setLayout(gbl);
			
		gbc.fill = GridBagConstraints.NONE;
	
		
		button = new JButton("Hinzufügen");
		button2 = new JButton("Hinzufügen");
		button3 = new JButton("Bestellen");
		label1 = new JLabel("Firma:*",JLabel.LEFT);
		label2 = new JLabel("Vor-/Nachname:*",JLabel.LEFT);
		label3 = new JLabel("Strasse/Nr:*",JLabel.LEFT);
		label_ort = new JLabel("PLZ/Ort:*",JLabel.LEFT);
		
		
		
		vorname = new JTextField();
		nachname = new JTextField();
		strasse = new JTextField();
		h_nr = new JTextField();
		ort = new JTextField();
		plz = new JTextField();
		firma = new JTextField();
		
		
		gbl.setConstraints(label1, gbc);
		gbc.gridy = 2;gbc.gridx = 0;gbc.ipadx= 40;
	//	gbc.weighty = 0.1;
		c.add(label1,gbc);
	
		gbl.setConstraints(firma,gbc);
		gbc.gridy =2 ;gbc.gridx = 1; gbc.ipadx =200; //gbc.gridwidth = 1;

		c.add(firma,gbc);
		
		
		gbl.setConstraints(label2, gbc);
		gbc.gridy = 3;gbc.gridx =0;  gbc.ipadx = 30;//gbc.gridwidth = 3;
		c.add(label2,gbc);
		
		
		gbl.setConstraints(vorname,gbc);
		gbc.gridy =3; gbc.gridx = 1; gbc.ipadx = 150;// gbc.gridwidth = 1;
		c.add(vorname,gbc);
		
		
		gbl.setConstraints(nachname,gbc);
		gbc.gridy =3; gbc.gridx = 2; gbc.ipadx = 150;// gbc.gridwidth = 1;
		c.add(nachname,gbc);
	
		
		gbl.setConstraints(label3, gbc);
		gbc.gridy = 4; gbc.gridx = 0; gbc.ipadx = 30;//gbc.gridwidth = 3;
		c.add(label3,gbc);
		
		
		gbl.setConstraints(strasse,gbc);
		gbc.gridy =4; gbc.gridx = 1; gbc.ipadx = 200; //gbc.gridwidth = 1;
		c.add(strasse,gbc);
		
		gbl.setConstraints(h_nr,gbc);
		gbc.gridy =4; gbc.gridx = 2; gbc.ipadx = 20; //gbc.gridwidth = 1;
		c.add(h_nr,gbc);
		
		gbl.setConstraints(label_ort,gbc);
		gbc.gridy =5; gbc.gridx = 0; gbc.ipadx = 20; //gbc.gridwidth = 1;
		c.add(label_ort,gbc);
		
		gbl.setConstraints(plz,gbc);
		gbc.gridy =5; gbc.gridx = 1; gbc.ipadx = 80; //gbc.gridwidth = 1;
		c.add(plz,gbc);
		
		gbl.setConstraints(ort,gbc);
		gbc.gridy =5; gbc.gridx = 2; gbc.ipadx = 200; //gbc.gridwidth = 1;
		c.add(ort,gbc);
		
	
		
		gbl.setConstraints(button,gbc);
		gbc.gridy = 6; gbc.gridx = 0;gbc.ipadx = 0;// gbc.gridwidth = 0;
		c.add(button,gbc);
		
		gbl.setConstraints(button2,gbc);
		gbc.gridy = 0; gbc.gridx = 0;gbc.ipadx = 1; //gbc.gridwidth = 1;
		c.add(button2,gbc);
		

		gbl.setConstraints(button3,gbc);
		gbc.gridy = 10; gbc.gridx = 3;/*gbc.ipadx = 1;*/ //gbc.gridwidth = 1;
		c.add(button3,gbc);



        String[] columnNames = {"Art_No",
                                "Bezeichnung",
                                "Preis",
                                "Menge"};
      Object[][] data = 
      {
            {"Mary", "Campione",
             "Snowboarding", new Integer(5), new Boolean(false)},
            {"Alison", "Huml",
             "Rowing", new Integer(3), new Boolean(true)},
            {"Kathy", "Walrath",
             "Knitting", new Integer(2), new Boolean(false)},
            {"Sharon", "Zakhour",
             "Speed reading", new Integer(20), new Boolean(true)},
            
      };

        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(350, 100));
        
        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setIgnoreRepaint(false);
    
        gbc.fill = GridBagConstraints.NONE;
        
        gbc.gridx = 0; gbc.gridy = 8;gbc.gridwidth = 4;
        
        gbl.setConstraints(scrollPane, gbc);
        c.add(scrollPane,gbc);
        
       
    }


danke euch vielmals
 

robinab

Mitglied
Hallo ???,

stell alle ipadx und alle ipady-Einstellungen auf 0, setze fill auf HORIZONTAL und arbeite mit den Randeinstellungen, also insets. Es kann sein, dass Du evtl. die ipady-Einstellung dann doch noch auf 20 setzen mußt, damit die Felder nicht zu schmal sind.

Die Constraints des GridBagLayouts haben sehr viel mehr Einstellungen als Du verwendest. Probier damit mal ein bißchen rum, dann kriegst Du schon Erfahrung. Aber paß auf: Im GridBagLayout beeinflussen sich alle Elemente untereinander!!!

Noch ein Tipp: Leg das Layout auf Deine Table, nicht auf Deine ScrollPane! Und bei Tabellen am Besten fill=BOTH. I.d.R. willst Du ja, dass die Tabelle mitgezogen wird, wenn das Fenster in der Größe verändert wird.

Gruß!
robin
 
V

vodn7v

Gast
alles klar, ich danke dir fuers erste.

das verstehe ich noch nicht so ganz: "noch ein Tipp: Leg das Layout auf Deine Table, nicht auf Deine ScrollPane! "

mit dem mitziehen sollte eig nich so das prob sein weil ich die fesntergröße fest auf 640*480 wollte. sollte dann doch kein problem sein.. odeR?
 
V

vodn7v

Gast
also ich habe ipad x+y auf 0 gesetz und HORIZONTAL eingestellt.

das problem ist,wie du auch schon sagtest das die alle voneinander abhängig sind. gibt es denn kein layout wo ich einfach per x,y die position angeben kann und die größe definieren kann ?

ich habe zb ein kleines feld plz darunter wieder ein normales mit e-mail adresse.. plz wird jetzt aber genauso groß wie e-mails adresse weil dies das größte feld ist.

ich hab mir vorgestellt das das in etwas so aussehen soll :

java_01.JPG
 

robinab

Mitglied
In dem Fall würde ich Dir das null-Layout empfehlen!
Das sieht dann so aus: this.setLayout(null);
Bei diesem Layout kannst Du die Elemente genau so positionieren, wie Du willst, und zwar mit <element>.setBounds(<xPos>, <yPos>, <width>, <height>);.
Du solltest dann aber für Dein Fenster this.setResizable(false) setzen. Das GridBagLayout nur verwenden, wenn das Fenster resizable sein soll und die Elemente mitwachsen oder -schrumpfen sollen, sonst viel zu kompliziert!

Gruß!
robin
 
G

Guest

Gast
okay.. danke dir fuers erste.. ich nehme an , dass ich dann die fenster nich so schön machen kann wie bei anderen layouts !?!? oder gibts dafuer n lösung?
danke
 

robinab

Mitglied
Bei anderen Layouts berechnet halt JAVA intern, wie die Elemente positioniert werden müssen, wenn Du das Fenster größer oder kleiner ziehst.
Beim null-Layout ist alles fixiert.

Ich versteh nicht ganz, was Du mit "... dann die Fenster nicht so schön machen kann wie bei anderen Layouts. Oder gibts dafür ne Lösung?" Was für eine Lösung erwartest Du denn?

Entweder Dein Fenster hat eine fixe Größe, alle Felder sollen immer die gleiche Position und Größe haben => null-Layout.
Fenstergrößer verändert sich, die Elemente sollen dynamisch
angepaßt werden => BorderLayout, FlowLayout, GridLayout oder GridBagLayout - je nachdem, wie das Fenster aussehen und reagieren soll und wie komplex es ist.

Hier nochn bißchen was zum Nachlesen:
http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html

Viel Spaß!
robin
 
B

Beni

Gast
Wenn das Programm mit verschiedenen Schriftgrössen (sehr wahrscheinlich...) zurechtkommen soll: nichts Null-Layout :wink:

Benutz doch JPanels um passende Elemente zu gruppieren. Dann kannst du auch "LayoutManager in LayoutManagern verschachteln", je nachdem welcher gerade am besten passt.

[Edit: als Anregung]
Code:
package forum;

import java.awt.*;
import javax.swing.*;

public class Beispiel{
    public static void main( String[] args ) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.getContentPane().add( createPanel(), BorderLayout.CENTER );
        frame.pack();
        frame.setVisible( true );
    }
    
    private static JPanel createPanel(){
        JPanel base = new JPanel( new GridBagLayout() );
        
        base.add( new JLabel( "Name" ), new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0, 
                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
                new Insets( 1, 1, 1, 1 ), 0, 0 ));
        
        base.add( new JLabel( "Vorname" ), new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0, 
                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
                new Insets( 1, 1, 1, 1 ), 0, 0 ));
        
        base.add( new JLabel( "PLZ" ), new GridBagConstraints( 0, 2, 1, 1, 0.0, 0.0, 
                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
                new Insets( 1, 1, 1, 1 ), 0, 0 ));
        
        base.add( new JLabel( "e-Mail" ), new GridBagConstraints( 0, 3, 1, 1, 0.0, 0.0, 
                GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
                new Insets( 1, 1, 1, 1 ), 0, 0 ));
        
        JTextField fieldName = new JTextField();
        JTextField fieldVorname = new JTextField();
        JTextField fieldPLZ = new JTextField();
        JTextField fieldMail = new JTextField();
        
        // die voraussichtliche Anzahl Zeichen.
        fieldName.setColumns( 12 );
        fieldVorname.setColumns( 12 );
        fieldPLZ.setColumns( 4 );
        fieldMail.setColumns( 24 );
        
        // das funktioniert nur, wenn das LookAndFeel nicht veraendert wird
        fieldName.setMinimumSize( fieldName.getPreferredSize() );
        fieldVorname.setMinimumSize( fieldVorname.getPreferredSize() );
        fieldPLZ.setMinimumSize( fieldPLZ.getPreferredSize() );
        fieldMail.setMinimumSize( fieldMail.getPreferredSize() );
        
        base.add( fieldName, new GridBagConstraints( 1, 0, 1, 1, 1.0, 1.0,
                GridBagConstraints.WEST, GridBagConstraints.NONE,
                new Insets( 1, 10, 1, 1 ), 0, 0 ));
        
        base.add( fieldVorname, new GridBagConstraints( 1, 1, 1, 1, 1.0, 1.0,
                GridBagConstraints.WEST, GridBagConstraints.NONE,
                new Insets( 1, 10, 1, 1 ), 0, 0 ));
        
        base.add( fieldPLZ, new GridBagConstraints( 1, 2, 1, 1, 1.0, 1.0,
                GridBagConstraints.WEST, GridBagConstraints.NONE,
                new Insets( 1, 10, 1, 1 ), 0, 0 ));
        
        base.add( fieldMail, new GridBagConstraints( 1, 3, 1, 1, 1.0, 1.0,
                GridBagConstraints.WEST, GridBagConstraints.NONE,
                new Insets( 1, 10, 1, 1 ), 0, 0 ));

        // ein eigenes Panel für die Buttons
        JPanel buttons = new JPanel( new GridLayout( 1, 2 ));
        buttons.add( new JButton( "Ok" ));
        buttons.add( new JButton( "Abbrechen" ));
        
        base.add( buttons, new GridBagConstraints( 0, 4, 2, 1, 1.0, 1.0,
                GridBagConstraints.LAST_LINE_END, GridBagConstraints.NONE,
                new Insets( 1, 1, 1, 1 ), 0, 0 ));
        
        return base;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
L GridBagLayout Anordnung AWT, Swing, JavaFX & SWT 3
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
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
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
A GridbagLayout positionierungsproblem AWT, Swing, JavaFX & SWT 4
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

Ähnliche Java Themen

Neue Themen


Oben