ich wollte einfach zwei Zufallszahlen erzeugen und diese dann an die Koordinaten einer zu zeichnenden Linie weitergeben, damit einfach eine Linie bei der ausführung herumspringt.
Hat keinen Sinn, ist nur damit ich etwas Üben kann.
Leider funktioniert der Aufruf der Methode die die Zufallszahlen erzeugt nicht.
Die Methode heißt: Zufallszahl.
Diese Methode wollte in der main-Methode in einer Endlosschleife aufrufen.
Die main Methode ist statisch. Die Funktion Zufallszahl ist nicht statisch und benötigt daher eine Instanz, auf der Du diese aufrufst. Statt Zufallszahl(); könntest Du fenster.Zufallszahl(); aufrufen.
Aber da sind einige gedankliche Probleme drin. So setzt Du immer neue Werte aber malst ja nicht. Mit jedem neuen Set an Zufallszahlen werden die bisherigen überschrieben.
Und dann solltest Du Deine Namensgebung besser beachten:
a) Klassen werden groß gestartet. Funktionen fangen klein an. Also auf deine Namen bezogen würde das bedeuten "Probieren" (Klasse) und "zufallszahl" (Funktion).
b) Die Namen sollendem entsprechen, was sie entsprechen. Eine Klasse ist eine Beschreibung einer Sache. Also kann dies kein Verb sein. Also wäre hier etwas wie TestKlasse oder so denkbar. (Wird in c) ehh nochmal behandelt!) und Funktionen sollten eine Tätigkeit wiedergeben, also ein Verb beinhalten. zufallszahlenBerechnen oder zufallszahlenErneuern wären da Beispiele.
c) Dann sollten Namen immer etwas zu dem Inhalt aussagen. Deine Klasse probieren erstellt ja ein Fenster. Das könnte also dein "HauptFenster" sein oder so.
Eine mögliche Verbesserung wäre evtl:
- Dein Fenster bekommt einen Button.
- Beim drücken des Buttons wird eine Linie gezeichnet, und Start- und Endepunkt wird durch Zufallszahlen ermittelt.
- Erweiterung: Die Linien werden gespeichert. Dazu könnte man evtl. eine eigene Klasse "Linie" haben, die die Koordinaten speichert. Und eine Linie hat ein paint(Graphics g) als Funktion oder so ... Dann hätte man einen Objektorientierten Ansatz. Die Linien liessen sich in einer ArrayList<Linie> speichern.
Du kannst ein invalidate() Aufruf beim JFrame machen. Aber das macht evtl. nicht ganz so viel Sinn bei deinem aktuellen Code, denn mit dem wird wie gesagt immer nur eine Linie gezeichnet die ständig anders aussehen wird. Ob Du da mehr siehst als einfach nur ein Prozess mit hoher CPU Last wage ich zu bezweifeln.
Ich weiß, das er immer nur eine neue an einer anderen Position liegende Linie zeichnet, das war auch so gedacht.
Nur zeichnet er im moment eine einzige Linie, wenn ich das Programm starte, er sollte aber wenn das Programm gestartet wird immer eine neu linie zeichnen.