in Jpanel zeichnen

Status
Nicht offen für weitere Antworten.

feuervogel

Mitglied
Hallo!

Ich arbeite noch nicht lange mit swing, daher entschuldigt bitte, falls meine frage etwas naiv klingen mag und/oder eher in den anfängerbereich gehört...

ich arbeite mittels der mvc-struktur und möchte in ein fenster immer wieder mal was zeichnen lassen, je nachdem was der benutzer für eingaben auf der konsole macht. alles klappt 1 a, nur die zeichnung in das fenster ist mir bisher ein rätsel...
Code:
public class Zeichner implements Observer {
    
    private JFrame fenster;
    private JPanel inhalt = new JPanel();
    
    /**
     * Konstruktor, initialisiert MVC-Struktur
     * @param rechner das Modell
     */
    public Zeichner(Rechner rechner, String titel) {
        
        fenster = new JFrame(titel);
        
   ...
     
        initView();
...

    }

    
    /**
     * Methode um View zu initialiseren
     */
    private void initView() {

        draw();
        inhalt.setPreferredSize(new Dimension(500,500));
        fenster.setContentPane(inhalt);
		fenster.setVisible(true);
        
    }
...

 public void update(Observable m, Object o) {
       	
		
		int[][] punkte	= rechner.getPunkte();
		for( int i = 0; i < punkte.length; i++ ) 
			System.out.println( "Punkte: " + punkte[i][0] + " " + punkte[i][1] );

    }
...
so, ich habe das mal etwas verkürzt. sobald der benutzer neue eingaben macht, berechnet das modell neue punkte und benachrichtigt seine observer. die methode update wird dann auch aufgerufen und die korrekten punkte ausgeben.

wie zeichne ich nun diese punkte (mit Graphics.drawPolygon() ) in das Jpanel?

meine kentnisse sind soweit: ich muss ein eigenes panel von Jpanel ableiten, dort dann in die paint methode das zu zeichnende einfügen (wie die punkte dann dorthin übergeben werden, ist mir ein rätsel), und diese paint methode wird dann immer via repaint() aufgerufen...

aber das muss doch auch irgendwie einfacher gehen, oder nicht?!?
 
okay, was meine müden augen lasen: ich kann mir eine klasse von JFrame ableiten und die dann bei jedem update neu aufrufen, mit den zu zeichnenden punkten im konstruktor...dann hab ich zwar mehrere fenster, aber wie ich das alte schließe, finde ich sicher irgendwie raus...oder kann mir jemand was simpleres empfehlen?
 
ich habs jetzt schon ungefähr 1000 mal beantwortet.
Aber hey, warum nicht 1001 mal? :autsch:
-JComponent auf den Frame klatschen.
-paintComponent überschreiben
-alles was gezeichnet werden soll in einer Instanzvariablen ablegen
-keine andere Methode zum zeichnen überschreiben
-paintComponent nie direkt aufrufen sondern IMMER über repaint()
-suche benutzen...
 
hey danke! ja, ich war etwas suchfaul, und weiß wie es ist, die gleiche frage 1000 mal zu beantworten, also nochmals danke!!!

ich bastel mir da grade was zusammen...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben