Canvas "löscht sich"

Status
Nicht offen für weitere Antworten.

akaDisi

Aktives Mitglied
Hi,

ich habe ein Canvas auf dem ich in der paint() methode ein Koordinatensystem zeichnen lasse, das sich an die Werte der Benutzer anpasst. Jetzt habe ich das Problem, dass ich mit einer 2ten Funktion die Graphen eintrage. Allerdings verschwinden die wieder, wenn ich runterscrolle und das Applet nicht mehr sichtbar ist. Genau so, wenn sich ein Ordner über das Applet schiebt.

Woran kann das liegen? Kann man da irgendwas machen, damit das "gesichert" wird?

Wenn ihr Quellcode braucht, dann sagt bescheid, aber ich hoffe ihr könnt mir so helfen.

MfG Disi
 
S

SlaterB

Gast
klingt als würdest du irgendwo getGraphics() aufrufen und selber zeichen,
so dass bei einem repaint() + normalen Zeichenvorgang, ausgelöst durch die externen Ereignisse, die Daten verschwinden,

Code wäre nützlich, ja
 

akaDisi

Aktives Mitglied
Java:
//[...]
public void paint (Graphics grafik){
        Dimension d=getSize();
        
        int breite=d.width, hoehe=d.height,
            abstandxachse, abstandyachse;
        
        abstandxachse = 35;
        abstandyachse = 35;
        
        int einteilungy = (hoehe-abstandyachse*2)/8;
        int einteilungx = (breite-abstandxachse*2)/5;

      //Zeichnen eines 4Ecks um das Canvas
        grafik.drawRect(1,1,breite-2,hoehe-2);
      
      //Achsen zeichnen   
        grafik.drawLine(abstandxachse,hoehe-abstandyachse,abstandxachse,hoehe-(hoehe-abstandyachse));
        grafik.drawLine(abstandxachse,hoehe-abstandyachse,breite-abstandxachse,hoehe-abstandyachse);
      
     //Beschriftung der Achsen anbringen   
        grafik.drawString("X",breite-100,hoehe-5);
        grafik.drawString("Y",5,hoehe-(hoehe-25));
       
      //Einteilung auf den Achsen  
        for(int i=1;i<=8;i++){
            grafik.drawLine(abstandxachse-2,hoehe-abstandyachse-(einteilungy*i),
                                 breite-abstandxachse,hoehe-abstandyachse-(einteilungy*i));

            if(i==2){
                grafik.drawString("0,5",abstandxachse-18,hoehe-abstandyachse-(einteilungy*i));
            }
            else if(i==4){
                grafik.drawString("1,0",abstandxachse-18,hoehe-abstandyachse-(einteilungy*i));
            }
            else if(i==6){
                grafik.drawString("1,5",abstandxachse-18,hoehe-abstandyachse-(einteilungy*i));
            }
            else if(i==8){
                grafik.drawString("2,0",abstandxachse-18,hoehe-abstandyachse-(einteilungy*i));
            }
        }

        for(int i=1;i<=5;i++){
            grafik.drawLine(abstandxachse+(einteilungx*i),hoehe-abstandyachse-2,
                                 abstandxachse+(einteilungx*i),hoehe-abstandxachse+2);

            if(i==1){
                grafik.drawString("100",abstandxachse+(einteilungx*i)-10,hoehe-abstandyachse+18);
            }
            else if(i==2){
                grafik.drawString("200",abstandxachse+(einteilungx*i)-10,hoehe-abstandyachse+18);
            }
            else if(i==3){
                grafik.drawString("300",abstandxachse+(einteilungx*i)-10,hoehe-abstandyachse+18);
            }
            else if(i==4){
                grafik.drawString("400",abstandxachse+(einteilungx*i)-10,hoehe-abstandyachse+18);
            }
            else if(i==5){
                grafik.drawString("500",abstandxachse+(einteilungx*i)-10,hoehe-abstandyachse+18);
            }
        }
    }
//[...]
/*Die Funktion hier wird dann später, nachdem der Benutzer 
die Daten eingegeben hat aufgerufen. in colFarbe wird einfach 
eine Farbe übergeben (will die verschiedenen Graphen färben) 
und koordinaten ist halt ein Array mit den Werten.*/
 public void zeichnen(int[][] koordinaten, Color colFarbe){
      
      Graphics grafik = this.getGraphics(); 
/*Hier ist es wie du 
gesagt hast. Aber wie kann ich sonst auf dem Canvas (die funktion 
ist eine Memberfunktion der Canvasklasse) zeichnen?*/
      Dimension d=getSize();
      int /*breite=d.width,*/ hoehe=d.height;
      
      grafik.setColor(colFarbe);      

      for(int i = 1 ; i < 99 ; i++)
      {
        if(koordinaten[i][1] <= 200) {
            if((hoehe-35-(koordinaten[i+1][1]*3)) <= hoehe-35) {
              grafik.drawLine(35+koordinaten[i][0]*2,hoehe-35-(koordinaten[i][1]*3),
                              35+koordinaten[i+1][0]*2,hoehe-35-(koordinaten[i+1][1]*3));
            }
        }
      }
    }

Hoffe, dass dir/euch das erstmal weiter hilft.

MfG Disi
 

Michael...

Top Contributor
Du musst Dir die Graphen als Objekte (z.B. in einer ArrayList) speichern. In der paint Methode arbeitest Du dann alle zu zeichnenden Graphen ab.
 
S

SlaterB

Gast
bzw. das koordinaten-Array usw. speichern und von paint aus zeichnen() aufrufen,
aber selbst dann nicht getGraphics() aufrufen, sondern das Graphics-Objekt der paint-Methode als Parameter übergeben
 

akaDisi

Aktives Mitglied
Hmm wenn ich Zeichnen aus der Paintmethode aus aufrufe, dann habe ich das Problem, dass ich ja jedes mal, wenn ich die werte änderen lasse durch den DAU, dass ich dann die Paint Methode aufrufen muss, oder?
 
S

SlaterB

Gast
richtig, wobei nicht paint direkt,
sondern immer nur
repaint();

alles neu zeichnen,
das ist jedenfalls das einfache normale Verhalten,
wenn man irgendwann Experte ist kann man auch komplizierteres versurchen
 

akaDisi

Aktives Mitglied
Hmmm nagut, dann versuche ich das mal so ...

So:

Java:
public void btnShow_ActionPerformed(ActionEvent evt) {
//[...]
    ((GrafikCanvas)cvsAnzeige).repaint();
//[...]
}

Allerdings muss ich ja jetzt irgendwie die Koordinaten noch mit übergeben und die Farbe.

Mach ich das in der Main-Classe als public, oder wie? =D
 
S

SlaterB

Gast
wichtig ist, dass die Daten am Ende in der benötigten Klasse vorhanden oder verfügbar sind,
wie sie dahinkommen ist nebensächlich,
ob die GUI-Klasse eine andere Klasse fragt oder eigene Klassenattribute hat, die von anderen vor dem repaint()-Aufruf per set-Methode gefüllt werden,
alles ist denkbar
 

akaDisi

Aktives Mitglied
Wenn man bei einem Canvas die Repaint aufruft, dann dürfte ein Konsturktor doch nicht nochmal ausgeführt werden, oder?
 
S

SlaterB

Gast
ein solcher Frevel wäre undenkbar, Konstruktoren kommen nur einmal dran
 

Verjigorm

Top Contributor
Wenn man bei einem Canvas die Repaint aufruft, dann dürfte ein Konsturktor doch nicht nochmal ausgeführt werden, oder?

Also ganz eindeutig sollte kein Konstruktor aufgerufen werden :D
Generell möchte ich dir anraten, dich deutlich leichteren Themen zu widmen.
Zeichnen ist nicht grade trivial und deine Fragen lassen auf generell fehlendes Grundwissen schliessen ;)
Vielleicht nochmal weiter vorne anfangen, tutorial etc.

mfg Verjigorm
 

akaDisi

Aktives Mitglied
xD Ich habe schon 2 Jahre C++ Programmierung hinter mir, Klasse, Vererbung und Kon und Destruktoren sind mir alles ein Begriff (15 Pkt in der Schule :p ) Aber ich hader bei meinem Prog einfach und sucher verzweifelt den fehler und naja... dann zieht man bei einer anderen Programmiersprache halt mal unterschiedliches in Betracht ^^

Ich setz mich erst seid letzter Woche mit Java auseinander und naja... das eher unfreiwillig :p
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
B Canvas erstellen Java Basics - Anfänger-Themen 4
D Erste Schritte Canvas verschwinden nicht mehr Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
S canvas zeichnet nichts Java Basics - Anfänger-Themen 7
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
E Java Canvas Zeichnung Java Basics - Anfänger-Themen 2
J BlueJ canvas Buttons adden? Java Basics - Anfänger-Themen 2
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
S canvas Java Basics - Anfänger-Themen 9
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
T canvas.setBackground(); Java Basics - Anfänger-Themen 2
U Zeichnen mit Canvas. Java Basics - Anfänger-Themen 5
T Canvas aktualisierung mit repaint Java Basics - Anfänger-Themen 5
G Bild in Panel oder canvas einfügen Java Basics - Anfänger-Themen 3
S Bild wird auf Canvas nicht angezeigt Java Basics - Anfänger-Themen 8
J Text auf Canvas zentrieren. Java Basics - Anfänger-Themen 4
F zeichnen auf Canvas will nicht klappen Java Basics - Anfänger-Themen 11
S NetBeans 6.0.1 / Zeichnen auf Canvas Java Basics - Anfänger-Themen 8
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
G Probleme mit JToolBar + Canvas Java Basics - Anfänger-Themen 6
Y Problem mit Canvas Java Basics - Anfänger-Themen 3
B 2 Canvas in einem JFrame Java Basics - Anfänger-Themen 2
philipp Problem mit Canvas Java Basics - Anfänger-Themen 5
S Canvas verkleinern -> Altes Stück Canvas wird weitergezei Java Basics - Anfänger-Themen 4
M Tooltips werden von Canvas "verschluckt" Java Basics - Anfänger-Themen 13
A wie füge ich eine Canvas in JFrame ein? Java Basics - Anfänger-Themen 11
C ein Canvas ist zu groß. mit Scrollbar ? Java Basics - Anfänger-Themen 8
L Canvas fokusieren Java Basics - Anfänger-Themen 4
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
M ArrayList - remove() löscht nicht! - weiß nicht wieso! Java Basics - Anfänger-Themen 8
F NetBeans Clear and Build löscht Dateien? Java Basics - Anfänger-Themen 5
X Arraylist löscht nicht! Java Basics - Anfänger-Themen 7
B Delete Methode löscht falsches Element Java Basics - Anfänger-Themen 7
G Paint Methode löscht alles Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
A Konsolenausgabe verschiebt sich Java Basics - Anfänger-Themen 8
M Wie lassen sich Konstanten in Bedingung stellen? Java Basics - Anfänger-Themen 1
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
B Programm beendet sich nicht und weiteres seltsames Verhalten Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
M Java GUI label ändert sich erst zum Schluss Java Basics - Anfänger-Themen 4
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
H Punkt bewegt sich auf einer Ellipse Java Basics - Anfänger-Themen 6
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
Franzi1001 ScrollBar lässt sich nicht bewegen Java Basics - Anfänger-Themen 4
W Client verbindet sich nicht Java Basics - Anfänger-Themen 14
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
C Classpath Compiler lässt sich nur bedingt von Kommandozeile aus starten Java Basics - Anfänger-Themen 17
CptK Datentypen Objekt lässt sich nicht zu arraylist hinzufügen Java Basics - Anfänger-Themen 2
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
CptK Interface JLabel bewegt sich nicht sondern teleportiert sich... Java Basics - Anfänger-Themen 3
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
L Panel verkleinert sich unerklärlicherweise Java Basics - Anfänger-Themen 7
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
K Sysout wiederholt sich Java Basics - Anfänger-Themen 6
H Wieso öffnet sich der Texteditor? Java Basics - Anfänger-Themen 6
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
T Schleife fährt sich fest Java Basics - Anfänger-Themen 14
E App lässt sich nicht starten Java Basics - Anfänger-Themen 8
ZotacZ Best Practice Lohnt es sich in GWT einzuarbeiten? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben