update() wird bei Programmstart und resize nicht gemacht

Status
Nicht offen für weitere Antworten.

Tominator

Mitglied
Hi!
Ich habe jetzt von der paint() auf update() umgestellt, aber jetzt zeichnet er mir das Programm am start und bei einem resize nicht mehr?!
Was kann man da machen?
Code ist hier:
Code:
    public void update(Graphics g) {
        sx = getWidth();
        sy = getHeight();
        buffer = createImage(sx, sy); //
        offscreen = buffer.getGraphics(); 
        for (int i = 0; i <= (sy / 20); i++) {
            listDrawLine(i + firstentry, i, sx, sy, offscreen);
        }
        g.drawImage(buffer, 0, 0, this); 
    }

    public void listDrawLine(int iohne, int imit, int sx, int sy, Graphics gglobe) {
        if (iohne == 0 || iohne % 2 == 0) {
            gglobe.setColor(new Color(0, 0, 0));
        } else {
            gglobe.setColor(new Color(41, 41, 41));
        }
        gglobe.fillRect(0, imit * 20, sx, 20 + (imit * 20));
        gglobe.setColor(new Color(255, 255, 255));
        String[] temps = new String[5];
        temps[0] = bib.getEntry(iohne).getTitel();
        temps[1] = bib.getEntry(iohne).getDauer();
        temps[2] = bib.getEntry(iohne).getInterpret();
        temps[3] = bib.getEntry(iohne).getMusikrichtung();
        temps[4] = bib.getEntry(iohne).getAlbum();
        boolean tempm = bib.getEntry(iohne).getMarking();
        boolean tempp = bib.getEntry(iohne).getPlaying();
        for (int i = 0; i < temps.length - 1; i++) {
            int tempwidth;
            tempwidth = fmnorm.stringWidth(temps[i]);
            if (i == 0 || i == temps.length - 1) {
                if (i == 0) {
                    if (tempwidth + 2 * distance > lines[i]) {
                        while (tempwidth + 2 * distance > lines[i]) {
                            temps[i] = temps[i].substring(0,
                                    temps[i].length() - 1);
                            tempwidth = stringWidth(tempm, tempp, temps[i]);
                        }
                        temps[i] = temps[i] + "...";
                    }
                }
                if (i == temps.length - 1) {
                    if (tempwidth + 2 * distance > sx - lines[i]) {
                        while (tempwidth + 2 * distance > sx - lines[i]) {
                            temps[i] = temps[i].substring(0,
                                    temps[i].length() - 1);
                            tempwidth = stringWidth(tempm, tempp, temps[i]);
                        }
                        temps[i] = temps[i] + "...";
                    }
                }
            } else {
                if (tempwidth + 2 * distance > lines[i] - lines[i - 1]) {
                    while (tempwidth + 2 * distance > lines[i] - lines[i - 1]) {
                        temps[i] = temps[i].substring(0, temps[i].length() - 1);
                        tempwidth = stringWidth(tempm, tempp, temps[i]);
                    }
                    temps[i] = temps[i] + "...";
                }
            }
        }
        for (int i = 0; i < temps.length; i++) {
            int tempi = 0;
            if (i != 0) {
                tempi = lines[i - 1];
            }
            if (!tempm && !tempp) {
                gglobe.setFont(fnorm);
                gglobe.drawString(temps[i], distance + tempi, (20 * imit)
                        + oanorm);
            }
            if (tempm && !tempp) {
                gglobe.setFont(fmarking);
                gglobe.drawString(temps[i], distance + tempi, (20 * imit)
                        + oamarking);
            }
            if (!tempm && tempp) {
                gglobe.setFont(fplay);
                gglobe.drawString(temps[i], distance + tempi, (20 * imit)
                        + oaplay);
            }
            if (tempm && tempp) {
                gglobe.setFont(fplay);
                gglobe.drawString(temps[i], distance + tempi, (20 * imit)
                        + oaplay);
            }
        }
        if (!tempm && !tempp) {
            //nix
            // gglobe.drawImage(imgMark, 0, 140, sx, 20, this);
        }


        if (tempm && !tempp) {
            //nix
            gglobe.drawImage(imgMark, 0, imit * 20, sx, 20, this);
        }
        if (!tempm && tempp) {
            //nix
            // gglobe.drawImage(imgMark, 0, imit*20, sx, 20, this);
        }
        if (tempm && tempp) {
            //nix
            gglobe.drawImage(imgMark, 0, imit * 20, sx, 20, this);
        }

        for (int i = 0; i < lines.length; i++) {
            gglobe.drawImage(imgLine, lines[i], 0, 1, sy, this);
        }
    }

    public int stringWidth(boolean mark, boolean play, String temp2) {
        int temp = 0;
        if (!mark && !play) {
            temp = fmnorm.stringWidth(temp2) + ppnorm;
        }
        if (play) {
            temp = fmplay.stringWidth(temp2) + ppplay;
        }
        if (mark && !play) {
            temp = fmmarking.stringWidth(temp2) + ppmarking;
        }
        return temp;
    }

Ich glaub zwar, dass nur die update() wichtig ist, aber ich schick mal lieber das andere mit :)

Also woran liegts?

ToMiNaToR

Edit: nicht nur bei start und resize, sondern auch bei überlappung von anderen fenstern....
 

Tominator

Mitglied
War das so schlecht formuliert?
Hab mir jetz mal die funktionsweise von dem painte durchgelesen und jetz hab ichs so gelöst und es geht (auch ohne flackern):
Code:
    public void update(Graphics g){
        paint(g);
    }
    
    public void paint(Graphics g) {
        sx = getWidth();
        sy = getHeight();
        buffer = createImage(sx, sy);
        offscreen = buffer.getGraphics(); 
        for (int i = 0; i <= (sy / 20); i++) {
            listDrawLine(i + firstentry, i, sx, sy, offscreen);
        }
        g.drawImage(buffer, 0, 0, this); 
    }

Also: GELÖST :D

ToMiNaToR
 

MPW

Top Contributor
hm, schoen dass du eine eigene Loesung gefunden hast, aber wenn du mal genau drueber nachdenkst, ist die update Methode ueberfluessig, du kannst sie loeschen und direkt paint aufrufen, das geht schneller.
 

Tominator

Mitglied
problem:
ich weiß nicht was der repaint() für die paint() methode ist :)
Ich zeichne halt immer alles mit repaint() neu und somit würde es flackern, wenn ich nicht die methode überschreibe...

ToMiNaToR
 

MPW

Top Contributor
Tominator hat gesagt.:
problem:
ich weiß nicht was der repaint() für die paint() methode ist :)
Ich zeichne halt immer alles mit repaint() neu und somit würde es flackern, wenn ich nicht die methode überschreibe...

ToMiNaToR


Hm, da gibt es aber elegantere Loesungen, such mal nach Doublebuffering
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java 8 Security Update Allgemeine Java-Themen 3
krgewb Darstellung bei Java-Update Allgemeine Java-Themen 8
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
S Java-Webstart und Update-Checks Allgemeine Java-Themen 0
A Update Software programmieren Allgemeine Java-Themen 1
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
E Java 7 update 51 Allgemeine Java-Themen 9
H SHA256 update-Funktion Allgemeine Java-Themen 3
F.S.WhiTeY JDK installieren Linux: Nach Update link auf Java zerschossen Allgemeine Java-Themen 4
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
L Launche update Allgemeine Java-Themen 19
D Update von TimerTask Allgemeine Java-Themen 13
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
J Eigenes Produkt Upgrade / Update-fähig halten? Allgemeine Java-Themen 16
S iText PDF - Verständnisproblem beim Update von TableCells (Seitenzahlen) Allgemeine Java-Themen 2
D Updaten von Klassen durch jar.exe zerstört diese. Update durch WinRAR gelingt! Allgemeine Java-Themen 2
T Update eines Programms - Beenden eines anderen Prozesses überwachen Allgemeine Java-Themen 8
D Java Update automatisieren Allgemeine Java-Themen 4
H SQL Update "Rückgabe der DB als String?" Allgemeine Java-Themen 7
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
S eigene Update Funktion Allgemeine Java-Themen 5
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
M jdesktop binding: jTable update nach Änderung... Allgemeine Java-Themen 3
B Regex-Fehler nach lib-Update Allgemeine Java-Themen 2
H Probleme! Mac Os und Java Update Allgemeine Java-Themen 3
R JAR-Update in laufender Applikation Allgemeine Java-Themen 9
A Hilfe mit 2-dimensionalem array ***UPDATE*** Allgemeine Java-Themen 27
Kr0e JCE doFinal/update Allgemeine Java-Themen 2
MQue update/paint Allgemeine Java-Themen 7
L Java6 update N bekommt neues Browser-Plugin, bitte testen. Allgemeine Java-Themen 7
O App Update Allgemeine Java-Themen 3
T NullPointerException nach Java Update Allgemeine Java-Themen 4
V Update des JAR-Archivs Allgemeine Java-Themen 5
M Update auf netbeans 6Beta 1 Allgemeine Java-Themen 2
U Programm soll sich nach update neustarten Allgemeine Java-Themen 30
M Tool zum autom. Client-Update Allgemeine Java-Themen 2
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
M Frage zu update Methode von Observer! Allgemeine Java-Themen 40
K Regex Versucher 2 *Update - sinnvoll und schön* :) Allgemeine Java-Themen 6
R Browser-Problem nach Java-Update Allgemeine Java-Themen 9
B statusbar update -> mit thread oder listener? Allgemeine Java-Themen 7
D wie update-erinnerung der jre deaktivieren? Allgemeine Java-Themen 6
D repaint oder update Methode? Allgemeine Java-Themen 6
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
kodela Klassen Klassenvariable wird nicht gesetzt Allgemeine Java-Themen 23
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
kodela Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt Allgemeine Java-Themen 5
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Java wird nicht gefunden Allgemeine Java-Themen 32
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben