Wo ist der Fehler im Code?
-
HiHo!
Ich haben Problem! der Code der unten steht sollte eigentlich ein Fenster aufmachen und dann mit Blau schreiben "Das ist ein Test", nur schreiben tuts net, auch andere Grafikfunktionen werden nicht gezeichnet.
Wo ist der Fehler ich find einfach keinen Grund warums net geht ?public class Fenster { public static void main(String[] args) { Frame wnd = new Frame("Das ist ein Test Fenster"); wnd.addWindowListener(new WindowClosingAdapter(true)); wnd.setSize(400,300); wnd.setBackground(Color.GREEN); wnd.setVisible(true); } public void paint(Graphics g) { g.setColor(Color.BLUE); g.drawString("Das ist ein TEST",10,10); } }
-
Auf jeden Fall gehört die paint-Methode, die du da geschrieben hast, nicht zu dem Frame, das du erzeugst. ...aber auch wenn sie dazu gehören würde, wäre es so nicht gut.
Es wäre besser, wenn du eine Klasse von JComponent ableiten würdest, dessen paintComponent-Methode überschreibst und eine Instanz dieser Klasse einem JFrame hinzufügen würdest. Frame würde ich garnicht verwenden.
-
Okay! hab den Code nochmals modifiziert jetzt leit ich das ganze von Frame ab, aber der zeichnet immer noch nix, ich glaub der Code sagt mehr als lange Worte!
public class Fenster extends Frame { public static void main(String[] args) { Fenster wnd = new Fenster(); } public Fenster() { super("Das ist ein Test"); addWindowListener(new WindowClosingAdapter(true)); setBackground(Color.lightGray); setSize(300,200); setVisible(true); } public void pait(Graphics g) { g.setColor(Color.BLUE); g.fillRect(10,10,200,200); g.drawString("Das ist ein TEST",10,10); } }
-
Was heißt "pait"?!
-
Mal von dem Tippfehler abgesehen (Konzentrationsschwäche?) würde ich dir nicht empfehlen die paint() des Frames zu überschreiben - schließlich möchtest du doch ein Fenster sehen. Und wenn es wirklich die paint sein muss dann ruf wenigstens als erstes mal super.paint(g) auf damit das Frame sich wenigstens darstellen kann.
-
Hmmm, es war wirklich nur der Tippfehler. Jetzt funktioniert es, danke.
-
BTW: Ab Java 1.5 gibt es den Annotation Type "Overrides". Damit kann man Methoden markieren, die andere Methoden überschreiben sollten. Wenn sie das dann nicht tun, merkt der Compiler das und gibt einen Fehler aus. Ein Fehler, wie er hier aufgetreten ist, könnte als bei konsequenter Benutzung von "Overrides" sehr schnell gefunden werden.