Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Java Fehler, weiß aber nicht wie er behoben wird. :'(
Als ich deinen Code compiliert habe, hat sich die Datei TestApplet.class erstellt. Es hat sich aber auch eine Datei namens TestApplet$Painter.class erstellt!
Was nun? Wieso ist das passiert?
Tut mir leid wegen so dummen fragen, lese aber erst seid ca. 1 Woche ein Buch über Java - der Name des Buches ist: Java-easy, falls es jemanden interresiert! :roll: :lol:
*ups* tut mir leid, hatte nicht den "edit" Button benutzt. :roll:
Habe die TestApplet$Painter.class Datei mal weggelassen und schon konnte das Applet nicht geladen werden. Nur wieso hat sich diese Datei hergestellt?! Wieso passiert das? :? :?
Habe angefangen das komplette Tutorial von Sun.com zu lesen. Es ist zwar englisch, aber ich kann ja englisch. Naja. Das java-easy Buch hat manches nicht so gut erklärt. Ich wollte mir erst noch ein weiteres Buch davon holen, was ich aber nun vielleicht nicht mache, da das Tutorial von Sun ziemlich gut erklärt.
Nunja; ich glaube das diese TestApplet$Painter.class Datei sich wegen der new Methode erstellt hat. Stimmt das so?
Also: Die zusätzliche .class-Datei kommt durch die inner class "Painter" (zeile 24). Sie steht zwar innerhalb der anderen Klasse, bekommt aer trotzdem eine eigene .class-Datei.
Der erste Fehler: Es gibt in der Klasse java.lang.String keine Methode setText(String s).
Wenn du also tmsg.setText() aufrufst, kann diese Methode schlicht und einfach gar nicht gefunden werden, weil sie nicht existiert. Stattdessen schreibst du einfach
Code:
tmsg = text.getText();
um den String zu initialisieren.
Der zweite Fehler: Du versuchst die Methode paint() mit einem String als Parameter aufzurufen. Eine solche Methode gibt es aber gar nicht. Die Methode paint in deiner Klasse verlangt als Parameter ein Objekt der Klasse Graphics. Du müsstest also eine Methode paint(String s) erstmal schreiben.
Code:
public void paint(String s)
{
//code
}
Der dritte Fehler: Du versuchst die Methode drawString() mit dem Graphics-Objekt als Parameter aufzurufen. Diese Methode gibt es aber gar nicht, der Parameter muss ein String sein:
Code:
public void paint(String s)
{
getGraphics().drawString(s);
}
Das würde zumindest den String schreiben, ich bin allerdings nicht ganz sicher, wohin. Du musst unter Umständen dem Graphics irgendwie die Position mitteilen, wo der String hin soll.
Auch wenn es vielleicht gar nicht so aussieht, aber unsere Klasse HalloWWW enthält jetzt - dank der Ableitung von der Klasse Applet - tatsächlich bereits fünf Methoden namens paint() .....
In der paint Methode steht schon was drin, auch wenn du sie nicht überschreibst. Da zeichnet sich auch der Button und das Textfeld. Du sagst dem Label, dass das ab jetzt den und den Text hat, dann sagt das automatisch dem Applet, dass es sich neu zeichnen soll, und wenn es sich dann neu zeichnet, schreibt das Label den neuen Text hin.
In der paint Methode steht schon was drin, auch wenn du sie nicht überschreibst. Da zeichnet sich auch der Button und das Textfeld. Du sagst dem Label, dass das ab jetzt den und den Text hat, dann sagt das automatisch dem Applet, dass es sich neu zeichnen soll, und wenn es sich dann neu zeichnet, schreibt das Label den neuen Text hin.
Wie der Methodenname schon sagt: Die Zeile weist das Label an,
bei Nachfrage (z.B. durch den LayoutManager), eine bevorzugte
Größe von 200x20 Pixeln anzugeben.
Normalerweise muß das aber nicht sein; dann berechnet Label eben
selbst wie groß es sein möchte/sollte.
Wenn du dein Programm z.B. variabel halten willst und es einen
Button "binHeutBesoffen" gibt, der allen Labels eine neue
Schriftgrößte verpaßt
Code:
label.setFont(label.getFont().deriveFont(48.0f));
dann würde dieses festverdrahtete new Dimension(200, 20) ziemlich
sinnlos