Supportnet / Forum / Skripte(PHP,ASP,Perl...)
J A V A - start- bzw. paint-Methode statt Event-Handling
Frage
Hallo, ich weiß, nicht ganz die passende Kategorie, aber trotzdem:
Wer kann mir einen Tipp geben, wie ich die nachfolgende Berechnung statt mit einer Event-Handling-Methode mit der start- bzw. paint-Methode zur Ausführung bringe ?:
public boolean handleEvent (Event e) {
if (e.target == b_rechne && e. id == Event.ACTION_EVENT) {
rechneClicked();
}
if (e.target == b_loesche && e.id == Event.ACTION_EVENT) {
loescheClicked();
}
return false;
}
public void rechneClicked() {
s_zahl1 = tf_zahl1.getText();
s_zahl2 = tf_zahl2.getText();
float a = new Float(s_zahl1).floatValue();
float b = new Float(s_zahl2).floatValue();
float c = (a + b) / 2;
s_ergebnis=String.valueOf(c);
tf_ergebnis.setText(s_ergebnis);
}
private void loescheClicked() {
tf_zahl1.setText("");
tf_zahl2.setText("");
tf_ergebnis.setText("");
}
Thanx - Gruß Thomas
Antwort 1 von semi
Wie meinst Du das?
Antwort 2 von thomasN
also, in nachfolgendem Java-Applet wird die Berechnung des Mittelwertes durch den Mausklick auf den Button "rechne Mittelwert" per Event-Handling ausgeführt.
Dies soll nun (ist für eine Übungsaufgabe einer EDV-Weiterbildung)
1. durch die start-Methode des Applets
und alternativ
2. durch die paint-Methode des Applets
passieren und NICHT mehr durch die Event-Handling Methode. Hoffe, das ist so verständlich.
Hier nochmal der komplette Applet-Code:
import java.awt.*;
import java.applet.Applet;
public class Mittelwert extends Applet {
Label l_ueberschrift;
TextField tf_zahl1, tf_zahl2, tf_ergebnis;
Button b_rechne, b_loesche;
Font fntFett;
String s_zahl1, s_zahl2, s_ergebnis;
public void init() {
resize(325,275);
setLayout (null);
fntFett = new Font ("SansSerif", 1, 14);
l_ueberschrift = new Label ("Dieses Applet berechnet Mittelwerte");
l_ueberschrift.setBounds(25,25,250,25);
add(l_ueberschrift);
l_ueberschrift.setFont (fntFett);
tf_zahl1 = new TextField (" ");
tf_zahl1.setBounds(25,75,125,25);
add(tf_zahl1);
tf_zahl2 = new TextField (" ");
tf_zahl2.setBounds(170,75,125,25);
add(tf_zahl2);
tf_ergebnis = new TextField (" ");
tf_ergebnis.setBounds(90,175,125,25);
add(tf_ergebnis);
b_rechne = new Button ("rechne Mittelwert");
b_rechne.setBounds(90,125,125,25);
add(b_rechne);
b_rechne.setFont (fntFett);
b_loesche = new Button ("löschen");
b_loesche.setBounds(90,225,125,25);
add(b_loesche);
b_loesche.setFont (fntFett);
}
public boolean handleEvent (Event e) {
if (e.target == b_rechne && e. id == Event.ACTION_EVENT) {
rechneClicked();
}
if (e.target == b_loesche && e.id == Event.ACTION_EVENT) {
loescheClicked();
}
return false;
}
public void rechneClicked() {
s_zahl1 = tf_zahl1.getText();
s_zahl2 = tf_zahl2.getText();
float a = new Float(s_zahl1).floatValue();
float b = new Float(s_zahl2).floatValue();
float c = (a + b) / 2;
s_ergebnis=String.valueOf(c);
tf_ergebnis.setText(s_ergebnis);
}
private void loescheClicked() {
tf_zahl1.setText("");
tf_zahl2.setText("");
tf_ergebnis.setText("");
}
}
Dies soll nun (ist für eine Übungsaufgabe einer EDV-Weiterbildung)
1. durch die start-Methode des Applets
und alternativ
2. durch die paint-Methode des Applets
passieren und NICHT mehr durch die Event-Handling Methode. Hoffe, das ist so verständlich.
Hier nochmal der komplette Applet-Code:
import java.awt.*;
import java.applet.Applet;
public class Mittelwert extends Applet {
Label l_ueberschrift;
TextField tf_zahl1, tf_zahl2, tf_ergebnis;
Button b_rechne, b_loesche;
Font fntFett;
String s_zahl1, s_zahl2, s_ergebnis;
public void init() {
resize(325,275);
setLayout (null);
fntFett = new Font ("SansSerif", 1, 14);
l_ueberschrift = new Label ("Dieses Applet berechnet Mittelwerte");
l_ueberschrift.setBounds(25,25,250,25);
add(l_ueberschrift);
l_ueberschrift.setFont (fntFett);
tf_zahl1 = new TextField (" ");
tf_zahl1.setBounds(25,75,125,25);
add(tf_zahl1);
tf_zahl2 = new TextField (" ");
tf_zahl2.setBounds(170,75,125,25);
add(tf_zahl2);
tf_ergebnis = new TextField (" ");
tf_ergebnis.setBounds(90,175,125,25);
add(tf_ergebnis);
b_rechne = new Button ("rechne Mittelwert");
b_rechne.setBounds(90,125,125,25);
add(b_rechne);
b_rechne.setFont (fntFett);
b_loesche = new Button ("löschen");
b_loesche.setBounds(90,225,125,25);
add(b_loesche);
b_loesche.setFont (fntFett);
}
public boolean handleEvent (Event e) {
if (e.target == b_rechne && e. id == Event.ACTION_EVENT) {
rechneClicked();
}
if (e.target == b_loesche && e.id == Event.ACTION_EVENT) {
loescheClicked();
}
return false;
}
public void rechneClicked() {
s_zahl1 = tf_zahl1.getText();
s_zahl2 = tf_zahl2.getText();
float a = new Float(s_zahl1).floatValue();
float b = new Float(s_zahl2).floatValue();
float c = (a + b) / 2;
s_ergebnis=String.valueOf(c);
tf_ergebnis.setText(s_ergebnis);
}
private void loescheClicked() {
tf_zahl1.setText("");
tf_zahl2.setText("");
tf_ergebnis.setText("");
}
}
Antwort 3 von semi
Hmm. Soviel zum Thema "Sinnvolle Aufgaben bei der Weiterbildung"
Die start-Methode wird nur einmal aufgerufen, wenn das Applet geladen wird. Zu diesem Zeitpunkt hast Du noch keine Zahlen eingegeben.
Bei paint müsstest Du irgendwas tun damit die Anzeige aktualisiert wird.
Die start-Methode wird nur einmal aufgerufen, wenn das Applet geladen wird. Zu diesem Zeitpunkt hast Du noch keine Zahlen eingegeben.
Bei paint müsstest Du irgendwas tun damit die Anzeige aktualisiert wird.
public void paint(Graphics g) {
super.paint(g);
rechneClicked();
}
