Java - Vektor Grafik - Probleme beim Zeichnen mit Schleifen ohne Ende

koddy013

Mitglied
Hallo zusammen,

ich habe Probleme beim Aneigen von Vektor Grafik mit Java.
Also für die Vektor Grafik, nutze ich BATIK für den Bibliotheken.

Kurzgesagt habe ich das Vektorgrafik (svg) hergestellt.
Jetzt wollte ich dieses hergestellten Vektorgrafik auf einem JSVGCanvas darstellen.
Da diesen Canvas liegt auf einem Panel ist, schreibe ich die Code wie folgendes
Java:
ProfilPanelRight =  new JPanel (){
    public void paint(Graphics g) {
            super.paint(g);
            System.out.println("methode doDraw dari ProfilPanelRight");
            ProfilPanelRight.setOpaque(true);
            ProfilPanelRight.add(canvas1);
            canvas1.setURI(new File("ProfilRight.svg").toURI().toString());
            canvas1.repaint();
    }
}

Jetzt kommt das Problem, und zwar wird diese methode in einen endlosen Schleife gerufen. Auch kommt die Zeichnung nicht.
Ich habe versuchen auch, diese override von paint-methode direkt unter canvas1. Aber dasselbe Ergebnis bekomme ich.
Weiss jemand, was soll ich tun, oder wie kann ich den Code verbessern?

p.s. als IDE benutze ich Netbeans

Danke im voraus für jede Hilfe.

Liebe Grüße,
 
Zuletzt bearbeitet:
Hi koddy,

deine Schleife entsteht dadurch, dass die überschriebene paint()-Methode jedes Mal aufgerufen wird, wenn das ProfilPanelRight neu dargestellt werden muss (deshalb hast du sie vermutlich überschrieben ;) ).
Dieser Fall allerdings ein, wenn du eine Darstelliungseigenschaft änderst (zum Beispiel ProfilPanelRight.setOpaque(true)) oder eine Kind-Komponente hinzufügst (so geschehen beim Aufruf von ProfilPanelRight.add(canvas1)).

Ehrlich gesagt sehe ich keinen Grund die paint()-Methode überhaupt zu überschreiben. Wenn du alles, was auf dein sysout folgt nach dem normalen Konstruktoraufruf von ProfilPanelRight machst, sollte dich das schon einen Schritt weiter bringen.

EDIT: Darüber hinaus sollte der Aufruf canvas1.setURI("ProfilRight.svg") einen vergleichbaren Effekt bringen wie canvas1.setURI(new File("ProfilRight.svg").toURI().toString())...


Grüße
Carron
 
Zuletzt bearbeitet:
Zurück