Anzeige:
Ergebnis 1 bis 15 von 16

Thema: GridBagLayout Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54

    GridBagLayout Problem

    Das ist die Struktur die rauskommen soll:

    ----------- ----------- -----------
    |Label |Label |Label |
    |-----------|-----------|-----------|
    |List |List |List |
    | | | |
    |-----------|-----------|-----------|
    |Label|tf |Label|tf |Label|tf |
    |-----------|-----------|-----------|
    |Label|tf |Label|tf |Label|tf |
    |-----------|-----------|-----------|
    |List |btn |btn |
    | |----------- |-----------|
    | |btn |btn |
    ----------- ----------- -----------

    Wenn jemand nen TIP geben könnte, wär das super.

    Die Struktur soll auf das MainFrame. Dadrüber ist nur das menü. also wird von der struktur der gesamte restliche platz verwendet.

    mfg
    Snoop

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    so ein mist , warum werden keine Leerzeichen akzeptiert???

    egal. nochmal im klartext:

    3 Spalten:

    1. spalte:
    5 Zeilen
    zeile 3 und 4 nochmals in 2 spalten unterteilt

    2. spalte:
    7 Zeilen
    zeile 3 und 4 nochmals in 2 spalten unterteilt

    3. Spalte:
    7 Zeilen
    zeile 3 und 4 nochmals in 2 spalten unterteilt

    mfg
    Snoop

  3. #3
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    [ code ] drum hilft bei Leerzeichen

    Die Unter-Unterteilung innerhalb des "Hauptgrids" machst du méglicherweise ganz gut mit HBox und VBox (oder heissen die HBoxLayout oder so àhnlich?).

    Aber am besten nimmst du fèr so mèhsames Zeugs eh einen GUI-Designer (der mit gridbaglayout umgehen kann)

    MfG Peschmà
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  4. #4
    Registrierter Benutzer
    Registriert seit
    26.10.2004
    Ort
    Beijing
    Beiträge
    31

    richtig

    ja nen guibuilder wuerd ich dir auch vorschlagen.
    GANZ besonders beim gridbaglayout!

    guck dir mal folgendes an:

    http://cloudgarden.com/jigloo/

    gruss
    marius

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.10.2003
    Beiträge
    35
    Mit etwas übung kann man Gridbags auch von Hand schreiben. Einfach bei 2-3 Projekten machen und schon hasst man wieder jeden GUI-Builder. Wenn man in Eclipse noch ein paar Templates macht, dann habe ich zumindest das Gefühl, dass ich schneller als mit einem Builder bin (ausserdem habe ich volle Kontrolle über den Code).

    Ansonst alternative Layouts anwenden. Ich nehme am liebsten das von jgoodies.com. Es ist zwar fast so aufwendig wie das Gridbag, aber es ist damit leichter schöne Ergebnisse zu bekommen.



    Dein Layout ist irgendwie merkwürdig... Sieht das wirklich so aus?

    Code:
     ----------- ----------- -----------
    |Label      |Label      |Label      | 
    |-----------|-----------|-----------|
    |List       |List       |List       |
    |           |           |           |
    |-----------|-----------|-----------|
    |Label|tf   |Label|tf   |Label|tf   |
    |-----------|-----------|-----------|
    |Label|tf   |Label|tf   |Label|tf   |
    |-----------|-----------|-----------|
    |List       |btn        |btn        |
    |           |-----------|-----------|
    |           |btn        |btn        | 
     ----------- ----------- -----------
    Geändert von dark_red (12-11-2004 um 07:41 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    jup das layout soll so aussehen. Das tool soll ja keinen schönheitswettbewerb gewinnen, sondern einfach nur funktional sein. *gg*

    schon mal thx für eure antworten, werd mich da mal durchwuseln. =)

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    Zitat Zitat von marius
    GANZ besonders beim gridbaglayout!

    http://cloudgarden.com/jigloo/
    was für sachen kann der denn noch so alles.

    Es gibt ja für Eclipse den Visual Editor, was haltet ihr von dem???

    mfg
    Snoop

  8. #8
    Registrierter Benutzer
    Registriert seit
    23.09.2004
    Beiträge
    54
    des weiteren sollten die Proggies die mit dem Editor erstellt werden auch unter Windows , Linux und Solaris laufen, sprich keine Bindung vorhanden sein an Java 5 oder anderen versionen. Sprich es sollte einem selbst überlassen sein von welcher verseion man das proggie abhängig macht.

    hab grad ein wenig gegoogelt und da gibt es ja extrem viele editoren aber bei vielen les ich so nur für windoofs oder auch für linux ab 1.4. So groß aufwendig soll ja die applikation nicht werden aber laufen muss sie unter den 3 oben genannten systemen.

    mfg
    snoop

  9. #9
    Registrierter Benutzer
    Registriert seit
    16.06.2002
    Beiträge
    18

    Lightbulb

    ich habe das GridBagLayout in einer Klasse gelöst, welche Formatierungselemente variabel zur Laufzeit parst. Voraussetzung ist Java 1.4, weil ich auf regular expressions zugreife.
    Internationalisiert wird auch, dass kann man natürlich weglassen.

    Vielleicht hilft das ja noch jemandem. Viele Grüße
    Kit

    GridBagPane.java
    Code:
    import java.awt.*;
    import javax.swing.*;
    import java.util.ResourceBundle;
    
    class GridBagPane extends JPanel {
    	GlobalProperties GP;
    	
    	GridBagLayout gbl;
    	GridBagConstraints gbc;
    	
    	
    	static GridBagConstraints LabelConstraints=new GridBagConstraints(1,1,1,1,1d,1d,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(6,6,6,3),0,0);
    	
    	static GridBagConstraints DefaultConstraints=new GridBagConstraints(0,0,1,1,1.0,1.0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(6,3,6,6), 0, 0);
    	
    	static Dimension DefaultMinSize=new Dimension(96,18);
    	static Dimension DefaultPrefSize=new Dimension(120,24);
    	
    	GridBagPane(GlobalProperties GP) {
    		this.GP=GP;
    		gbl=new GridBagLayout();
    		gbc=(GridBagConstraints) DefaultConstraints.clone();
    		
    		setLayout(gbl);
    	}
    	
    	public Component add(JComponent c, String l, int gridx, int gridy) {
    		
    		add(new JLabel(l, SwingConstants.RIGHT), new GridBagConstraints(gridx-1,gridy,1,1,1d,1d,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(6,6,6,3),0,0));
    		
    		gbc.gridx=gridx;
    		gbc.gridy=gridy;
    		gbc.gridwidth=1;
    		gbc.gridheight=1;
    		c.setMinimumSize(DefaultMinSize);
    		c.setPreferredSize(DefaultPrefSize);
    		add(c, gbc);
    		return c;
    	}
    	
    	public Component add(JComponent c, String f) {
    		String e[]=f.split("[,]+");
    		
    		for (int i=0; i<e.length; i++) {
    			String s[]=e[i].split("[\\=]+");
    			
    			if (s.length==1 ) {
    				parseFormatString(c, s[0].trim());
    			} else if (s.length==2 ) {
    				parseFormatString(c, s[0].trim(), s[1].trim());
    			} 
    		}
    		
    		c.setMinimumSize(DefaultMinSize);
    		c.setPreferredSize(DefaultPrefSize);
    		add(c, gbc);
    		
    		gbc.gridx+=gbc.gridwidth+1;
    		return c;
    	}
    	
    	public GridBagConstraints getConstraints() {
    		return gbc;
    	}
    	
    	public void parseFormatString(JComponent c, String s, String a) {
    		if (s.equalsIgnoreCase("gridx")) {
    			gbc.gridx=Integer.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("gridy")) {
    			gbc.gridy=Integer.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("gridheight")) {
    			gbc.gridheight=Integer.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("gridwidth")) {
    			gbc.gridwidth=Integer.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("weightx")) {
    			gbc.weightx=Double.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("weighty")) {
    			gbc.weighty=Double.valueOf(a).intValue();
    		
    		} else if (s.equalsIgnoreCase("anchor")) {
    			try {
    				gbc.anchor=gbc.getClass().getField(a).getInt(gbc);
    			} catch (Exception ex) {
    			}
    		}
    		
    		else if (s.equalsIgnoreCase("fill")) {
    			try {
    				gbc.fill=gbc.getClass().getField(a).getInt(gbc);
    			} catch (Exception ex) {
    			}
    		}
    		
    		else if (s.equalsIgnoreCase("ipdax")) {
    			gbc.ipadx=Integer.valueOf(a).intValue();
    		}
    		
    		else if (s.equalsIgnoreCase("ipady")) {
    			gbc.ipady=Integer.valueOf(a).intValue();
    		}
    		
    		else if (s.equalsIgnoreCase("insets")) {
    			String t[]=a.split("[\\s]+");
    			if (t.length==4) {
    				gbc.insets.left=Integer.valueOf(t[0]).intValue();
    				gbc.insets.top=Integer.valueOf(t[1]).intValue();
    				gbc.insets.right=Integer.valueOf(t[2]).intValue();
    				gbc.insets.bottom=Integer.valueOf(t[3]).intValue();
    			}
    		}
    		
    		else if (s.equalsIgnoreCase("label")) {
    			LabelConstraints.gridx=gbc.gridx;
    			LabelConstraints.gridy=gbc.gridy;
    			add(new JLabel(GP.localizeStr(a), SwingConstants.RIGHT), LabelConstraints);
    			gbc.gridx++;
    		}
    		
    		else if (s.equalsIgnoreCase("setToolTipText")) {
    			c.setToolTipText(GP.localizeStr(a));
    		}
    	}
    	
    	public void parseFormatString(JComponent c, String s) {
    		if (s.equalsIgnoreCase("nl")) {
    			gbc.gridx=0;
    			gbc.gridy++;
    		
    		} else if (s.equalsIgnoreCase("reset")) {
    			int gridx=gbc.gridx;
    			int gridy=gbc.gridy;
    			
    			gbc=(GridBagConstraints) DefaultConstraints.clone();
    			gbc.gridx=gridx;
    			gbc.gridy=gridy;
    		} 
    	}
    	
    }
    wird dann genutzt mit
    Code:
    CapitalPane = new GridBagPane(GP);
    CapitalPane.add(TF_Capital, "label=i18n_Amount");
    CapitalPane.add(TF_Valuta, "label=i18n_Valuta");
    		
    CapitalPane.add(TF_Rate, "nl, reset, label=i18n_Rate");
    CapitalPane.add(TF_RateFrom, "label=i18n_FirstOn");
    CapitalPane.add(TF_RateTo,"label=i18n_LastOn");
    		
    CapitalPane.add(TF_InterestRate, "nl, label=i18n_InterestRate");
    CapitalPane.add(TF_InterestCycle, "label=i18n_InterestCycle");
    CapitalPane.add(TF_DayCountConvention, "label=i18n_DayCountConvention");
    		
    OKButton = new JButton(GP.localizeStr("i18n_Execute"));
    CapitalPane.add(OKButton, "nl, gridx=7, fill=HORIZONTAL");
    das Ergebnis des letzen Code-Schnippsels ist dann:
    Geändert von kit (03-12-2004 um 09:17 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •