Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 16 von 16

Thema: GridBagLayout Problem

  1. #16
    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
  •