Ich habe soeben den Versuch gestartet einen Plotter, der mir den Graph von quadratischen Funktionen grafisch zurückgibt, zu programmieren.
Jedoch scheitere ich im Moment noch an der void paint(Graphics g){} methode.
Dabei ist NICHT das mathematische Konzept das Problem, sondern das zeichnen eines striches, bzw Punktes selbst. Bei mir bleibt das ganze Fenster weiß, egal ob ich den hintergrund manuell ändere oder nicht.
Ich vermute, dass das Problem am LayoutManager liegt(ich will ihn aber verwenden), lasse mich aber gerne eines besseren belehren
Muss ich diese explizit aufrufen oder genügt es sie einfach unter dem Konstruktor zu implementieren?
hier der code:
Du machst lediglich die Frame-Instanz "frame" sichtbar. Die ist aber ein ganz normaler Frame ohne überschriebene paint-Methode.
Damit du die Zeichenoperationen in deiner MyWindow-Klasse siehst, müsstest du in der main
Java:
plotter.setVisible()
aufrufen.
Dann kannst du aber die Instanzvariable "frame" aus MyWindow löschen, ansonsten ist es nur verwirrend.
Ich habe jetzt wie du gesagt hast plotter.setVisible in meiner main untergebracht und das frame.setVisible (aus MyWindow) gelöscht.
Nun wird mir aber nur mehr das ergebnis der paint methode auf den bildschirm angezeigt nachdem ich das fenster selbst auf die gewünschte größe gebracht habe; die ganzen labels, textfelder, der button und die eingestellte fenstergröße sind nicht mehr vorhanden. Muss ich jetzt evtl den layoutmanager auf visible stellen? wenn ja- wie?
Gibt es in java die möglichkeit den graph komplett von den labels und textfeldern innerhalb meines 800x800 fensters zu trennen? wie?
ps: wie ihr vermutlich heraushört, bin ich recht neu in der welt von java, bitte daher -wenn möglich- ganz präzise und einfache antworten posten
Anbei noch ein bild zur visualisierung so wie ich es mir in etwa vorstelle
deine Kalsse MyWindow erbt von JFrame und hat ein Member frame von der Klasse JFrame. Da kommst du wharscheinlich schon durcheinander und solltest dich für eine Möglichkeit entscheiden.
Außerdem solltest du setVisible(true) erst ganz am Ende aufrufen, wenn du alle "Teile" zu deinem JFrame hinzugefügt hast.
Du solltest nie von einem Top-Level-Container (Frame, JFrame, JWindow) ableiten, um eigene Zeichenroutinen zu implementieren, und du solltest auch kein reines AWT mehr verwenden. Leite stattdessem von JComponent oder JPanel ab, überschreibe paintComponent(Graphics g) und zeichne dort. Dann kann du deine "Zeichenkomponente" zusammen mit anderen Gui-Komponenten in einen normalen JFrame packen und den dann layouten.
Ein Beispiel findest du hier: https://www.java-forum.org/thema/arraylist-rectangles2d.138049/page-3#post-914036