# Fehlermeldung: Applet nicht initialisiert



## Javaistschwer (28. Aug 2011)

Kurze Frage, was meint das Java Programm wenn ich das Programm(Aplleton) ausführe mit 

"Applet nicht initialisiert"

War die ganze Arbeit umsonst oder wurde was falsch gemacht!?


----------



## Marco13 (28. Aug 2011)

Was ist "Aplleton"? Wenn das in der Statuszeile des Browsers erscheint: Schau mal rechts unten un der Taskleiste nach einem kleinen "Java-Symbol" (oder im Browser unter "Extras") ob du irgendwo die "Java Console" aufbachen kannst, und schau, was da dann steht.


----------



## Javaistschwer (28. Aug 2011)

Ich habe mal die Datei angehängt was passiert wenn sich das Appleton prog startet


----------



## Marco13 (28. Aug 2011)

Ist das nicht der normale Appletviewer? Wie auch immer, schau' mal ob du die "Java Console" findest, da steht bestimmt was interessantes drauf...


----------



## Javaistschwer (28. Aug 2011)

```
at java.lang.Class.getConstructor0(Class.java:2699)
	at java.lang.Class.newInstance0(Class.java:326)
	at java.lang.Class.newInstance(Class.java:308)
	at sun.applet.AppletPanel.createApplet(AppletPanel.java:785)
	at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
	at sun.applet.AppletPanel.run(AppletPanel.java:368)
	at java.lang.Thread.run(Thread.java:619)
```


Das steht ganz unten ich denke das du dies meinst


----------



## Volvagia (28. Aug 2011)

Steht da noch mehr? Im besten Fall steht "Exception in Thread n" ganz am Anfang.
btw. was ist denn jetzt ein Aplleton? Klingt für mich nach einen Wort, was sich irgend ein Lehrer ausgedacht hat um Java zu "vereinfachen". Hier stößt man über sowas ja häufiger. ^^


----------



## Javaistschwer (28. Aug 2011)

Appleton kann man auswählen in Java-Editor.

Indem:

- Java Editor starten
- Programme
- JApplet(diese Weltkugel mit dem Schild)


Dann machst du son Appleton Programm zeugs


----------



## Javaistschwer (28. Aug 2011)

Ich habe es immernoch nicht gepeilt warum das Programm nicht starten will. Habe ich einen Fehler gemacht? Bitte um leichte Anfänger Erklärung. :S
ich bekomm die Kriese
Und wie mach ich die Schrift Blau und gebe dem Hintergrund ne Farbe?



```
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class apnr2 extends Applet {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JNumberField jNumberField1 = new JNumberField();
  private JNumberField jNumberField2 = new JNumberField();
  private JButton jButton1 = new JButton();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  // Ende Attribute

  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 303, 300);
    add(cp);
    // Anfang Komponenten

    jLabel1.setBounds(80, 33, 60, 16);                                           
    jLabel1.setText("Gewicht:");                                                
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel1);                                                             
    jLabel2.setBounds(80, 72, 51, 16);                                          
    jLabel2.setText("Größe:");                                                   
    jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel2);                                                            
    jLabel3.setBounds(96, 208, 36, 16);                                          
    jLabel3.setText("BMI:");                                                     
    jLabel3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel3);                                                             
    jNumberField1.setBounds(136, 28, 65, 24);     // Feld für Gewicht            
    jNumberField1.setText("");                                                   
    cp.add(jNumberField1);                                                       
    jNumberField2.setBounds(136, 72, 65, 24);      //Feld für Größe              
    jNumberField2.setText("");                                                   
    cp.add(jNumberField2);                                                       
    jLabel4.setBounds(208, 32, 74, 16);                                          
    jLabel4.setText("Kilogramm");                                                
    jLabel4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel4);                                                             
    jLabel5.setBounds(208, 72, 44, 16);                                          
    jLabel5.setText("Meter");                                                    
    jLabel5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel5);                                                             
    jLabel6.setBounds(136, 208, 13, 16);                                         
    jLabel6.setText("");                                                         
    jLabel6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  
    cp.add(jLabel6);                                                             
    jButton1.setBounds(96, 128, 113, 41);                                        
    jButton1.setText("BERECHNEN");                                               
    jButton1.setMargin(new Insets(2, 2, 2, 2));                                  
    jButton1.addActionListener(new ActionListener() {                            
      public void actionPerformed(ActionEvent evt) {                             
        jButton1_ActionPerformed(evt);                                           
      }
    });
    cp.add(jButton1);                                                            
    // Ende Komponenten

  }
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {                        

    double gewicht=0, groesse=0, bmi=0;                                               

    gewicht=Integer.parseInt(jNumberField1.getText());                            
    groesse=Integer.parseInt(jNumberField2.getText());                             
    bmi=gewicht/groesse;                                                          
    bmi=bmi/groesse;                                                               
    jLabel6.setText(String.valueOf(bmi));                                          
  }


  // Ende Methoden

}
```


----------



## Marco13 (28. Aug 2011)

Ersetz' mal Applet durch JApplet, Panel durch JPanel (nicht Swing und AWT mischen) und JNumbeField durch JTextField (was solln'n JNumberField sein?)


----------



## Volvagia (28. Aug 2011)

Und wenn es dann läuft hörst du auf das NullLayout zu verwenden (hat JApplet nicht standartgemäß BorderLayout?), schreibst Klassennamen groß, legst die Font als Konstante an (echt nicht hübsch), setzt die Vordergrundfarbe mit setForeground auf den jeweiligen Label und die Hintergrundfarbe mit setBackground. (setBackground wird NICHT auf das ContentPane weitergeleitet!)

Und vielleicht verwendest du eine andere IDE und keine GUI-Builder. Hier kommen die meisten Anfängercodebezogene Fragen von Leuten, die Java-Editor oder JBlue verwenden.


----------



## Marco13 (28. Aug 2011)

Oder kurz: Liest Trail: Creating a GUI With JFC/Swing (The Java™ Tutorials)


----------



## L-ectron-X (28. Aug 2011)

Volvagia hat gesagt.:


> hat JApplet nicht standartgemäß BorderLayout?


Jepp.


			
				API-Doc von JApplet hat gesagt.:
			
		

> The default contentPane will have a BorderLayout manager set on it.


----------



## Javaistschwer (29. Aug 2011)

Aben liebe Community,

ich habe die ratschläge von Marco13 verfolg - danke dafür! 
Ein Problemchen gibt es allerdings noch, wenn er den BMI berechnen soll, heißt
ich den Button klicke kommt als Ergebnis: "..." Mehr nicht und ich weiß mir auch da wieder
nicht zu helfen. Außerdem erkennt er keine Komma Zahlen -> double ist drinne!
-> Mit dem Background+Schriftfarbe will ich erst anfanegn wenn auch wirklich alles klappt:

PS: Wenn sich das JApllet Fensteröffnen steht oben links "Applet" soll das so sein, oder nur'n Fehler?

Hier das Programm nocheinmal:


```
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class apnr2 extends JApplet {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JButton jButton1 = new JButton();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  // Ende Attribute

  public void init() {
    JPanel cp = new JPanel(null);
    cp.setBounds(0, 0, 303, 300);
    add(cp);
    // Anfang Komponenten

    jLabel1.setBounds(80, 33, 60, 16);                                           //Eingabe
    jLabel1.setText("Gewicht:");                                                 //Ausgabe
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel1);                                                             //Verarbeitung
    jLabel2.setBounds(80, 72, 51, 16);                                           //Eingabe
    jLabel2.setText("Größe:");                                                   //Ausgabe
    jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel2);                                                             //Verarbeitung
    jLabel3.setBounds(96, 208, 36, 16);                                          //Eingabe
    jLabel3.setText("BMI:");                                                     //Ausgabe
    jLabel3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel3);                                                             //Verarbeitung
    jTextField1.setBounds(136, 28, 65, 24);     // Feld für Gewicht            //Eingabe
    jTextField1.setText("");                                                   //Ausgabe
    cp.add(jTextField1);                                                       //Verarbeitung
    jTextField2.setBounds(136, 72, 65, 24);      //Feld für Größe              //Eingabe
    jTextField2.setText("");                                                   //Ausgabe
    cp.add(jTextField2);                                                       //Verarbeitung
    jLabel4.setBounds(208, 32, 74, 16);                                          //Eingabe
    jLabel4.setText("Kilogramm");                                                //Ausgabe
    jLabel4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel4);                                                             //Verarbeitung
    jLabel5.setBounds(208, 72, 44, 16);                                          //Eingabe
    jLabel5.setText("Meter");                                                    //Ausgabe
    jLabel5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel5);                                                             //Verarbeitung
    jLabel6.setBounds(136, 208, 13, 16);                                         //Eingabe
    jLabel6.setText("");                                                         //Ausgabe
    jLabel6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel6);                                                             //Verarbeitung
    jButton1.setBounds(96, 128, 113, 41);                                        //Eingabe
    jButton1.setText("BERECHNEN");                                               //Ausgabe
    jButton1.setMargin(new Insets(2, 2, 2, 2));                                  //Verarbeitung
    jButton1.addActionListener(new ActionListener() {                            //Verarbeitung
      public void actionPerformed(ActionEvent evt) {                             //Verarbeitung
        jButton1_ActionPerformed(evt);                                           //Verarbeitung
      }
    });
    cp.add(jButton1);                                                            //Verarbeitung
    // Ende Komponenten

  }
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {                        //Verarbeitung
    // TODO hier Quelltext einfügen

    double gewicht=0, groesse=0, bmi=0;                                               //Eingabe

    gewicht=Integer.parseInt(jTextField1.getText());                             //Eingabe
    groesse=Integer.parseInt(jTextField2.getText());                             //Eingabe
    bmi=gewicht/groesse;                                                           //Verarbeitung
    bmi=bmi/groesse;                                                               //Verarbeitung
    jLabel6.setText(String.valueOf(bmi));                                          //Ausgabe
  }

  // Ende Methoden

}
```


----------



## Volvagia (29. Aug 2011)

Labels werden mit ... abgekürzt, wenn sie zu kurz sind. WEG VOM NULL-LAYOUT!
Und int/int gibt immer einen int zurück. BMI sind aber glaub ich mit Koma, oder? Habs grad getestet, aber angeblich ist meiner mit 60 kg und 189 cm genau 17. :/

Edit: Mit nen anderen getestet, ergibt 16.8. Also immer double in die Division einbeziehen. Denk aber an die Ungenauigkeit dabei.


----------



## Javaistschwer (29. Aug 2011)

Sie werden damit abgekürzt, okay. Und NullLayout. Da habe ich noch keienn Peil von. Mir wurde
das alles so erklärt das ich Programm, etc. so starte und das anwende!?
Deshalb noch mal bitte kurze Erklärung.


----------



## Volvagia (29. Aug 2011)

http://www.java-forum.org/java-faq-beitraege/109289-vorstellung-layoutmanager-standard-java-api.html


----------



## dehlen (29. Aug 2011)

NullLayout ist nicht gut, da 
1. alle Posistionen von dir gesetzt werden müssen
2. das Layout je nach Betriebsystem dann abweichen kann und dann sehr unschön aussieht

Hier hast du mal eine Auflistung der gängigsten LayoutManager und deren Implementierungsmöglichkeiten:
Die Layout-Manager


----------



## jgh (29. Aug 2011)

```
void java.awt.Component.setBounds(int x, int y, int width, int height)


Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height.

Parameters:
x the new x-coordinate of this component
y the new y-coordinate of this component
width the new width of this component
height the new height of this component
```

=>
[JAVA=56]jLabel6.setBounds(136, 208, 150, 16)[/code]

außerdem so zumindest meine Meinung:

[JAVA=78]gewicht = Double.parseDouble(jTextField1.getText()); // Eingabe
		groesse = Double.parseDouble(jTextField2.getText()); // Eingabe[/code]


----------



## dehlen (29. Aug 2011)

und die Berechnung der Variable kann auch so abgekürzt werden: 

```
bmi = gewicht/(groesse*groesse/1.0e4);
```


----------



## Javaistschwer (29. Aug 2011)

jgh hat gesagt.:


> =>
> [JAVA=56]jLabel6.setBounds(136, 208, 150, 16)[/code]




Dankeschön das war der Teil de mir gefehlt hat, bzw. was korrigiert werden musste. Den Double Fehler habe ich vor einigen Minuten auch selber bemerkt! 
Vielen Dank jetzt habe ich das schon gut und weit. Nun muss ich ich an Background und Schrift ransetzen muss mal schauen wie das jetzzt alles läuft. Falls ich'n problem habe kann ich notfalls fragen. 

@über mir: In einem Satz sollen wir es nicht machen hatte schon einen Grund das ich es 2-Teilig haben wollte.


----------



## dehlen (29. Aug 2011)

Ich würde es mit GridBagLayout machen ungefähr so: (quick n' dirty also nicht erschrecken )

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

 
public class Test extends JApplet {

  JTextField heightField = new JTextField(30);
  JTextField weightField = new JTextField(30);
  JButton calcButton = new JButton("Berechnen !");
  JLabel bmiLabel = new JLabel("BMI: ");

 
  public void init() {

    JPanel panel = new JPanel(new GridBagLayout());
 
    add(panel);

    
    GridBagConstraints c;
    Insets set = new Insets(5, 5, 5, 5);
    
   
 
    c = new GridBagConstraints();
	c.insets = set;
	c.gridx = 0;
	c.gridy = 0;
	c.anchor = GridBagConstraints.LINE_START;
	panel.add(new JLabel("Körpergröße in cm: "), c);
	c.gridy = 1;
	panel.add(new JLabel("Gewicht in kg: "), c);                                      
    
	c.gridy = 3;
	c.gridx = 0;
	
	panel.add(bmiLabel, c);  

   c = new GridBagConstraints();
   c.insets = set;
   c.gridx = 1;
   c.gridy = 0;
   c.gridwidth = GridBagConstraints.REMAINDER;
   c.fill = GridBagConstraints.HORIZONTAL;
   c.anchor = GridBagConstraints.LINE_START;
		
   panel.add(heightField, c);

   c.gridy = 1;
   panel.add(weightField, c);                                                            
   
   c = new GridBagConstraints();
	c.insets = set;
	c.gridx = 0;
	c.gridy = 5;
	c.fill = GridBagConstraints.HORIZONTAL;
 	c.gridwidth = GridBagConstraints.REMAINDER;
 	c.anchor = GridBagConstraints.FIRST_LINE_START;
	panel.add(calcButton,c);   

		
        
		calcButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
			double gewicht=0, groesse=0, bmi=0;                                               
 
    gewicht=Double.parseDouble(weightField.getText());                             
    groesse=Double.parseDouble(heightField.getText());                             
    bmi=gewicht/(groesse*groesse/1.0e4);                                                           
    
    bmiLabel.setText("BMI: "+String.valueOf(bmi));
    
			}
		});
		panel.setVisible(true);
                                                            

 
  }
 
 
}
```

Hoffe das kompiliert soweit (habs im Browser geschrieben)
Die Ausgabe kann man dann noch verfeinern etc z.B mit DecimalFormat um die Ausgabe zu kürzen.
Außerdem kannst du weiterhin mit .setFont die Schriftart ändern, das habe ich nun nichtmehr gemacht.
Wenn du noch konkrete Fragen hast stelle sie hier einfach, ich bin mir sicher es findet sich jemand der dir hilft !


----------



## Volvagia (29. Aug 2011)

Ich würde es so machen:


```
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class BMI extends JApplet
{
	private JTextField heightField;
	private JTextField weightField;
	private JLabel bmiLabel;
	private JButton calcButton;
	 
	public void init()
	{
		createGui();
		createListener();
	}
	private void createGui()
	{
		JPanel inputPanel = new JPanel(new InputLayout());
		add(inputPanel, BorderLayout.CENTER);
		
		inputPanel.add(new JLabel("Körpergröße in cm:"), InputLayout.LEFT);
		
		heightField = new JTextField();
		inputPanel.add(heightField, InputLayout.RIGHT);
		
	    inputPanel.add(new JLabel("Gewicht in kg: "), InputLayout.LEFT);
	    weightField = new JTextField();
	    inputPanel.add(weightField, InputLayout.RIGHT);
	    
	    bmiLabel = new JLabel();
	    inputPanel.add(bmiLabel, InputLayout.LEFT);
	    
	    JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
	    add(buttonPanel, BorderLayout.SOUTH);
	    
	    calcButton = new JButton("Berechnen!");
	    buttonPanel.add(calcButton);
	}
	private void createListener()
	{
		calcButton.addActionListener(new ActionListener() {
			private DecimalFormat dc;
			{
				dc = new DecimalFormat("0.00");;
			}
			public void actionPerformed(ActionEvent e)
			{
				double gewicht = 0.0d;
				double groesse = 0.0d;
				double bmi = 0.0d;
 
				gewicht = Double.parseDouble(weightField.getText());                             
				groesse = Double.parseDouble(heightField.getText());                             
				bmi=gewicht/(groesse*groesse/1.0e4);
				
				bmiLabel.setText("BMI: " + dc.format(bmi));
			}
		});
	}
}
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Layout, um Eingabemasken zu vereinfachen. Linke comps pref Size, rechte gestretched.
 * @author Kai
 */
public class InputLayout implements LayoutManager2
{
	public static final String LEFT = "Left";
	public static final String RIGHT = "Right";
	
	private List<CompContainer> contList;
	
	public InputLayout()
	{
		super();
		contList = new ArrayList<CompContainer>();
	}
	public void addLayoutComponent(Component comp, Object constraints)
	{
		if(constraints == null)
			return;
		
		CompContainer cont = null;
		if(contList.isEmpty())
		{
			cont = new CompContainer();
			contList.add(cont);
		}
		else
			cont = contList.get(contList.size() - 1);
				
		String constr = constraints.toString();
		if(cont.isSet(constr))
		{
			cont = new CompContainer();
			contList.add(cont);
		}
		
		cont.add(comp, constr);
	}
	public void layoutContainer(Container parent)
	{
		if(contList.isEmpty())
			return;
		
		Insets insets = parent.getInsets();
		
		int parentWidth = parent.getWidth();
		int currentY = 5 + insets.top;
		
		int leftCompsMaxSize = 0;		
		for(CompContainer contIterator:contList)
		{
			Component left = contIterator.getLeftComponent();
			if(left == null)
				continue;
			Dimension leftPrefSize = left.getPreferredSize();
			
			leftCompsMaxSize = Math.max(leftPrefSize.width, leftCompsMaxSize);
		}
		
		for(CompContainer contIterator:contList)
		{
			Component left = contIterator.getLeftComponent();
			Component right = contIterator.getRightComponent();
			
			Dimension leftPrefDim = null;
			Dimension rightPrefDim = null;
			
			if(left != null)
				leftPrefDim = left.getPreferredSize();
			if(right != null)
				rightPrefDim = right.getPreferredSize();
			
			if(leftPrefDim != null)
				left.setBounds(3 + insets.left, currentY, leftCompsMaxSize, leftPrefDim.height);
			if(rightPrefDim != null)
			{
				int x = leftCompsMaxSize + 3 * 2;
				int y = currentY;
				int w = (parentWidth - (leftCompsMaxSize + 3 * 2)) - 3 - insets.right;
				int h = rightPrefDim.height;
				
				right.setBounds(x, y, w, h);
			}
			
			if(leftPrefDim != null && rightPrefDim != null)
				currentY+= Math.max(leftPrefDim.height, rightPrefDim.height) + 3;
		}
	}
	public void removeLayoutComponent(Component comp)
	{
		Iterator<CompContainer> contIterator = contList.iterator();
		while(contIterator.hasNext())
		{
			CompContainer cont = contIterator.next();
			if(cont.contains(comp))
			{
				cont.remove(comp);
				if(cont.isEmpty())
					contIterator.remove();
			}
		}
	}
	public Dimension preferredLayoutSize(Container parent)
	{
		Dimension prefSize = new Dimension(parent.getWidth(), 0);
		for(CompContainer contIterator:contList)
		{
			Component left = contIterator.getLeftComponent();
			Component right = contIterator.getRightComponent();
			
			Dimension leftPrefDim = left.getPreferredSize();
			Dimension rightPrefDim = right.getPreferredSize();
			
			prefSize.height+= Math.max(leftPrefDim.height, rightPrefDim.height) + 3;
		}
		prefSize.height+=5 + parent.getInsets().bottom;
		return(prefSize);
	}
	
	
	public Dimension minimumLayoutSize(Container parent)
	{
		return(preferredLayoutSize(parent));
	}
	public Dimension maximumLayoutSize(Container target)
	{
		return(preferredLayoutSize(target));
	}	
	public float getLayoutAlignmentX(Container target) { return(0.0f); }
	public float getLayoutAlignmentY(Container target) { return(0.0f); }
	public void invalidateLayout(Container target) {}
	public void addLayoutComponent(String name, Component comp) {}

	private class CompContainer
	{
		private Component leftComp;
		private Component rightComp;
		
		public boolean isSet(String constr)
		{
			if(constr.equals(LEFT))
				return(leftComp != null);
			else
				return(rightComp != null);
		}

		public Component getLeftComponent()
		{
			return(leftComp);
		}
		public Component getRightComponent()
		{
			return(rightComp);
		}

		public boolean isEmpty()
		{
			return(leftComp == null && rightComp == null);
		}

		public void remove(Component comp)
		{
			if(leftComp == comp)
				leftComp = null;
			else
				rightComp = null;
		}

		public boolean contains(Component comp)
		{
			return(leftComp == comp || rightComp == comp);
		}

		public void add(Component comp, String constr)
		{
			if(constr.equals(LEFT))
				leftComp = comp;
			else
				rightComp = comp;
		}
	}
}
```

Wieder ein Grund, warum ich absolut niemals das Gridbaglayout verwende. Viel zu viele unnötige Zeilen für ne Eingabemaske und nen Button.


----------



## dehlen (29. Aug 2011)

Ok aber ich finde das GridBagLayout halt für mich sehr gut, denn ich konnte bis jetzt so gut wie jede Gui meiner Projekte mit diesem Layout zusammenbauen weil ich auch einige Einstellungsmöglichkeiten hab (.anchor .fill etc).
Natürlich ist es manchmal einfach nicht nötig oder etwas zeilenintensiver aber ich finde das nicht wirklich schlimm.

Zu deiner Lösung:
Klar finde die Lösung wirklich gut und durchdacht. Meine Lösung ist halt etwas mehr auf den Code vom TO angepasst, sodass er es auch versteht und so... 
Denke z.B nicht das der TO schon mit ArrayListen etc gearbeitet hat.

Die Rundung mit DecimalFormat hätte ich so gemacht:

```
DecimalFormat df = new DecimalFormat("#.00");
bmiLabel.setText("BMI: "+String.valueOf(df.format(bmi)));
```


----------



## Volvagia (29. Aug 2011)

Klar. ^^ Ist halt immer Geschmackssache. Das Layout hab ich vor längeren mal geschrieben und verwende es für Eingabemasken. Ist ja eigendlich nicht zum Ansehen sondern Verwenden da. ^^
Macht mir einfach Spaß eigene angepasste Layouts zu schreiben. ^^
Es gibt ja immer einige Möglichkeiten, wie z. B. Boxen, wo man halt dann mehr Instanzen braucht.
Das DF habe ich schnell mal ergoogelt, brauche ich eigendlich kaum.


----------



## Marco13 (29. Aug 2011)

Ich fänd' da ein simples GridLayout eigentlich auch OK :bahnhof:


----------

