Layout beim Applet

  • Themenstarter Themenstarter Duh
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

Duh

Gast
hallöchen liebes java foru. ich hab von einem freund ein gutes java tutorial erhalten und es klappte bis jetzt auch alles wunderbar. nun bein ich auf eine aufgabe gestossen, in der ich ein applet programmieren soll, der mit 2 TextField die body-mass-index berechnet. soweit alles in ordnung, formel hab ich auch, aber ich hab ein problem, das vielleicht auf den ersten blickl lächerlich erscheint, aber ich hab alles versucht, was mir in den sinn kam. nun zum problem:

die anordnung sieht so aus:

- label, der das untenstehende textfeld beschreibt
- textfeld zur abfrage des gewichts
- label, der das untenstehende textfeld beschriebt
- textfeld zur abfrage der körpergrösse
- button "berechnen"
- label zur ausgabe des BMI


mein problem, ist dass mein letztes label NEBEN dem button erscheint und somit nicht ganz drauf ist. ich möchten den letzten label UNTER dem "berechnen" button...

so sieht mein programm aus bisher:

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class BMI extends Applet implements ActionListener{
	
	Label a = new Label("Ihr Körpergewicht in kg:");
	TextField b = new TextField("",30);
	Label c = new Label("Ihre Körpergrösse in cm:");
	TextField d = new TextField("",30);
	Button e = new Button("Berechnen");
	Label f = new Label("");


	public void init(){

		add(a);
		add(b);
		add(c);
		add(d);
		add(e);
		e.addActionListener(this);
		add(f);
		
		
	
	}//init



	public void actionPerformed(ActionEvent event) {


		if (event.getSource() == e){


			float bmi;
			int groesse, gewicht, x;
			groesse = Integer.parseInt(d.getText());
			gewicht = Integer.parseInt(b.getText());
			x = groesse / 100;

			bmi = gewicht / ( x*x);



			if (bmi<=18.5) 				{f.setText("Sie haben Untergewicht."+bmi);}			
			else if (bmi > 18.5 && bmi <= 25) 	{f.setText("Sie haben Normalgewicht."+bmi);}
			else if (bmi > 25 && bmi <= 30)		{f.setText("Sie haben Übergewicht."+bmi);}
			else 					{f.setText("Sie haben starkes Übergewicht."+bmi);}


			repaint();
		}//if


	}//actionperformed


}//class
[/code]
 
Du setzt einfach als erste Anweisung in init() das Layout:
Code:
...
public void init() {
this.setLayout(new GridLayout(6,1));

...

}

...
 
Ich habe das gerade nochmal ausprobiert und war mit der Ausgabe "Sie haben starkes Uebergewicht!" nicht ganz zufrieden, um nicht zu sagen beleidigt.
Der BMI wird tatsaechlich auch falsch berechnet, so ist es richtig:
Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class BMI extends Applet implements ActionListener {

	Label a = new Label("Ihr Körpergewicht in kg:");

	TextField b = new TextField("", 30);

	Label c = new Label("Ihre Körpergrösse in cm:");

	TextField d = new TextField("", 30);

	Button e = new Button("Berechnen");

	Label f = new Label("sdaf");

	public void init() {
		this.setLayout(new GridLayout(6, 1));
		add(a);
		add(b);
		add(c);
		add(d);
		add(e);
		e.addActionListener(this);
		add(f);

	}// init

	public void actionPerformed(ActionEvent event) {

		if (event.getSource() == e) {

			float bmi, x;
			int groesse, gewicht;
			groesse = Integer.parseInt(d.getText());
			gewicht = Integer.parseInt(b.getText());
			x = groesse / 100.0f;
			bmi = gewicht / (x * x);

			if (bmi <= 18.5) {
				f.setText("Sie haben Untergewicht." + bmi);
			} else if (bmi > 18.5 && bmi <= 25) {
				f.setText("Sie haben Normalgewicht." + bmi);
			} else if (bmi > 25 && bmi <= 30) {
				f.setText("Sie haben Übergewicht." + bmi);
			} else {
				f.setText("Sie haben starkes Übergewicht." + bmi);
			}

			repaint();
		}// if

	}// actionperformed

}// class
 
danke vielmal für die hilfe, wäre es möglich mir kurz zu erläutern, was die änderungen an sich genau bewirken?

ich möchte es auch verstehen und vll nächstes ma wieder anwenden^^

danke, wenn das nit zu viel arbeit macht natürlich ;D



ps: bei der formel dieses "f"

und die wirkung des befehls beim layout^^
 
danke vielmal für die hilfe, wäre es möglich mir kurz zu erläutern, was die änderungen an sich genau bewirken?

ich möchte es auch verstehen und vll nächstes ma wieder anwenden^^

danke, wenn das nit zu viel arbeit macht natürlich ;D



ps: bei der formel dieses "f"

und die wirkung des befehls beim layout^^
 
Das setLayout(..) macht einfach nur ein neues GridLayout (-Layout) mit 6 Zeilen und 1 Spalte, sodass deine Elemente dann nacheinander in die 6 Zeilen plaziert werden.

Das mit dem bmi:
Wenn du x = groesse / 100; schreibst, dann moechtest du ja wahrscheinlich eine Dezimalzahl haben -> das x muss schon mal ein float sein. Ansonsten wird in den meisten Faellen 1 raus kommen.
und du musst statt 100 auch 100.0f schreiben, weil du damit sagst, dass er nicht durch eine ganze sondern durch eine gebrochene Zahl teilen soll. Das f am Ende heisst dass die 100 eine float-100 ist und keine int-100. Alles klar?
 
super, danke dir viel mal, dass du mir alles so ausführlich erklärt hast^^

was ein geiles forum =D
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben