lundi 1 juin 2015
Graphik nach 100 ms neu laden
Posted on 07:25 by verona
Hallo Liebe Forum-Mitglieder,
ich habe meine eigene Klasse BalkenDiagramm welche eine eigene Klasse IntArray besitzt, IntArray wurde von mir selber programmiert und ähnelt der Klasse ArrayList (Aufgabe noch aus dem Unterricht). Jedoch wollte ich jetzt was eigenes damit programmieren und es funktioniert nicht.
Die Klasse BalkenDiagramm besitzt Methoden wie:
dies funktioniert einwandfrei und bei dem neu zeichnen der Graphik wird in der Konsole ebenfalls: Graphik neu zeichnen..... ausgegeben.
Die Idee war nun, dass ich ein Array sortiere und ich bei jeder Änderung des Arrays meine Balkengraphik neu zeichne.
ebenfalls funktioniert diese Methode einwandfrei und tut das was sie soll... also fast.
Mein Array hat die Länge 10 und dementsprechend wird in der Konsole folgendes ausgegeben:
I= 0
I= 1
I= 2
I= 3
I= 4
I= 5
I= 6
I= 7
I= 8
I= 9
und am Ende schließlich:
Graphik neu zeichnen.....
Das heißt, das meine Graphik erst dann neu gezeichnet wird, wenn die Methode fertig ist, aber es ist doch theoretisch möglich diesen Vorgang während des sortierens bereits zu machen, oder ??
Hat jemand eine Idee, Lösungsvorschlag, Erklärung oder ähnliches??
Bzw. getNotifyed wird tatsächlich 10 mal aufgerufen, jedoch wird das paintComponent nur ganz am ende einmal aufgerufen, warum??? :( ruft repaint() etwas nicht paintComponent(Graphics g) auf??
mfg.
Luecx
ich habe meine eigene Klasse BalkenDiagramm welche eine eigene Klasse IntArray besitzt, IntArray wurde von mir selber programmiert und ähnelt der Klasse ArrayList (Aufgabe noch aus dem Unterricht). Jedoch wollte ich jetzt was eigenes damit programmieren und es funktioniert nicht.
Die Klasse BalkenDiagramm besitzt Methoden wie:
Java Code:
-
-
super.paintComponent(g);
-
if (drawable && intArray != null) {
-
-
-
try {
-
g2d.setColor(drawColor);
-
-
}
-
-
if (intArray.getLength() > 0 && this.getHeight() > 0) {
-
int maxValue = intArray.getValue(getIndexOfMaximum(0, intArray.getLength() -1));
-
int minValue = intArray.getValue(getIndexOfMinimum(0, intArray.getLength() -1));
-
int zahlenBereich = maxValue - minValue;
-
int faktor = 1;
-
-
int middle = (int) (this.getHeight() - this.getHeight() * makeValuePositivDouble((double) minValue / (double) zahlenBereich));
-
-
if (maxValue >= 0 && minValue >= 0) {
-
middle = getHeight();
-
zahlenBereich = maxValue;
-
}
-
if (maxValue < 0 && minValue < 0) {
-
middle = 0;
-
zahlenBereich = minValue;
-
}
-
-
if (zahlenBereich != 0)
-
faktor = this.getHeight() / zahlenBereich;
-
-
-
-
for (int i = 0; i < intArray.getLength(); i++) {
-
-
int xKord = getWidth() / (intArray.getLength() + 2) * (i + 1);
-
if (intArray.getValue(i) > 0) {
-
g2d.fillRect(xKord, middle - this.makeValuePositiv(intArray.getValue(i) * faktor), getWidth() / (intArray.getLength() +2), this.makeValuePositiv(intArray.getValue(i) * faktor));
-
g2d.setColor(shapeColor);
-
g2d.drawRect(xKord, middle - this.makeValuePositiv(intArray.getValue(i) * faktor), getWidth() /(intArray.getLength() +2), this.makeValuePositiv(intArray.getValue(i) * faktor));
-
g2d.setColor(drawColor);
-
} else {
-
g2d.fillRect(xKord, middle, getWidth() / (intArray.getLength() +2), this.makeValuePositiv(intArray.getValue(i) * faktor));
-
g2d.setColor(shapeColor);
-
g2d.drawRect(xKord, middle, getWidth() / (intArray.getLength() +2), this.makeValuePositiv(intArray.getValue(i) * faktor));
-
g2d.setColor(drawColor);
-
}
-
-
}
-
}
-
-
}
-
}
-
-
public void getNotifyed() {
-
repaint();
-
}
dies funktioniert einwandfrei und bei dem neu zeichnen der Graphik wird in der Konsole ebenfalls: Graphik neu zeichnen..... ausgegeben.
Die Idee war nun, dass ich ein Array sortiere und ich bei jeder Änderung des Arrays meine Balkengraphik neu zeichne.
Java Code:
ebenfalls funktioniert diese Methode einwandfrei und tut das was sie soll... also fast.
Mein Array hat die Länge 10 und dementsprechend wird in der Konsole folgendes ausgegeben:
I= 0
I= 1
I= 2
I= 3
I= 4
I= 5
I= 6
I= 7
I= 8
I= 9
und am Ende schließlich:
Graphik neu zeichnen.....
Das heißt, das meine Graphik erst dann neu gezeichnet wird, wenn die Methode fertig ist, aber es ist doch theoretisch möglich diesen Vorgang während des sortierens bereits zu machen, oder ??
Hat jemand eine Idee, Lösungsvorschlag, Erklärung oder ähnliches??
Bzw. getNotifyed wird tatsächlich 10 mal aufgerufen, jedoch wird das paintComponent nur ganz am ende einmal aufgerufen, warum??? :( ruft repaint() etwas nicht paintComponent(Graphics g) auf??
mfg.
Luecx
Graphik nach 100 ms neu laden
Categories: Graphik nach 100 ms neu laden
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire