-
Hallo,
Ich habe ein kleines Problem Swing betreffend.
Nach diesem habe ich bereits recherchiert, jedoch keine befriedigende Antwort gefunden.
Das folgende Problem tritt nur unter Windows 7 auf:
Jedes Swing Fenster (JFrame, JDialog,..) füllt sich, sobald es vergrößert wird, bei den zu rendernden Bereichen schwarz.
Wird das Fenster also größer gezogen, erscheint der zu füllende Bereich schwarz - erst nach einer Sekunde füllt sich dieser mit den Komponenten.
Bei undekorierten Frames ohne native Controls und Border geschieht jedoch etwas anderes:
Das ganze Fenster flackert schwarz!
Alles passiert nur unter Swing, AWT und SWT sind nicht von diesem Problem betroffen.
Hier ein Screenshot: (edit: jetzt dem post angehängt)

Schon komisch oder?
Existiert eine Möglichkeit dieses Verhalten zu unterdrücken?
Gibt es nicht vielleicht die Möglichkeit diesen "schwarzen" Bereich anders einzufärben, sodass dieser im "Systemgrau" (Default JPanel background) erscheint und nicht so auffällig ist?
Vielen Dank im Voraus,
Martin.Geändert von mccae (07.08.11 um 21:25 Uhr)
-
07.08.11 06:26 #2SE Tutorials.de Gastzugang
1) Verwende bitte die Anhangs-Option hier im Forum. Das Problem bei Fremd-Hostern ist das die Bilder irgendwann gelöscht werden und somit nicht mehr zugänglich sind.
2) Ich habe über dieses Problem bereites gepostet : http://www.tutorials.de/java/377460-...-ati-ccc2.html
Das Problem tritt in Verbindung mit ATI-Grafikkarten , der Treiber-Version 11.x und dem CatalysControlCenter2 auf. Die einzige Möglichkeit dieses Problem zu behen ist das D3D-Rendering von Java mit Hilfe des Parameters
zu deaktivieren. Bei verwenden von OpenGL statt D3D treten unter Umständen ebenfalls Darstellungsfehler auf wesshalb ich von dieser Option ebenfalls abrate.Code :1
-Dsun.java2d.d3d=false
-
07.08.11 10:13 #3
- Registriert seit
- Jun 2009
- Beiträge
- 870
Wenn es bei dir nicht an der Grafikkarte liegt, dann vielleicht daran, dass du zu viel Rechenleistung beim repainten verbrauchst. Hast du irgendwelche paint() oder paintComponent()-Methoden überschrieben? Ist deine CPU-Auslastung hoch?
Ist doubleBuffering aktiviert?
Etwas seltsames:
Ich nutze Ubuntu 11.04 auf einer Intel iGPU und bei mir tritt der Fehler nur mit Opera auf. Swing-Anwendungen (genauso SWT) zeigen diese Flächen im normalen Hintergrundfarbton (bei mir Grau)Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Hallo,
Vielen Dank für eure Antworten!
@SPiKEe:
Nun, ich besitze keine ATI Grafikkarte.
Ich kann nur bestätigen, dass dieses Problem auch unter meinen Nvidia Systemen auftaucht.
Auf allen 3 Systemen mit 1x GeForce 7900GTX und einem alten Treiber, 1x 570GTX und 1x 590GTX mit den Treibern der 270er Serie sowie den 280er Beta Treiben, jeweils immer unter Windows 7 x64.
Auch auf meinem Laptop mit einem Intel Grafikchip tritt dieses Problem auf (auch Windows 7 x64).
"-Dsun.java2d.d3d=false" behebt das Problem nicht, es macht es nur "erträglicher".
Das Renderingproblem tritt immer noch auf, jedoch reduziert sich die schwarze Fläche auf eine Höhe, bzw. Breite von etwa 20px.
Ein Repaint scheint also schneller vonstatten zu gehen.
Besser als gar nichts ist es allemal.
Nun, was ich noch probiert habe:
Die 32bit Version der JVM, sowie das neue Java 7. Dito.
@genodeftest:
Das Problem tritt bei mir zumindest immer auf - unabhängig vom Inhalt des JFrames.
Das ganze hat in meinen Augen nichts mit der CPU Auslastung zu tun.
Was Double-Buffering betrifft: Ist Swing nicht von Haus aus schon double buffered?!
Ich meine ja.
Das Problem ist ja nichts neues...
Es ist nur merkwürdig, dass es dafür keine befriedigende Lösung gibt.
mfg,
Martin C. Caesar
-
07.08.11 22:18 #5
- Registriert seit
- Jun 2009
- Beiträge
- 870
Ja, stimmt eigentlich, Swing sollte von Haus aus DoubleBuffering aktiviert haben. Da das Control Panel betroffen ist, kann man auch ausschließen, dass Programmierfehler von dir vorliegen.
Welche JREs/JDKs hast du probiert?
Alles auf deinem Windows 7 64Bit?Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Hallo,
Ich habe folgendes durchprobiert:
Code :1 2 3
Sun JavaSE 1.6.0_26 x86 auf Windows 7 64bit Sun JavaSE 1.6.0_26 x64 auf Windows 7 64bit Sun JavaSE 1.7.0_00 x64 auf Windows 7 64bit
Das Problem tritt auf allen 3 meiner PCs auf, sowie auf meinem Laptop unter Windows 7 x64.
Leider kann ich keine x86 JRE auf einem x86 Win 7 testen, da mir dieses leider nicht zu Verfügung steht.
Erwähnenswert wäre vielleicht, dass das Problem auf dem Notebook meines Vaters nicht auftritt.
Dieses verwendet ein Windows XP SP3 x86.
Der Vollständigkeit halber:
Code :1
Sun JavaSE 1.6.0_26 x86 auf Windows XP SP3 32bit - kein Renderingproblem!
Das Ganze ist total "strange".
Es wäre interessant zu wissen, ob dieses Problem auch unter der 32bit Version von Windows 7 auftritt.
Ich habe jetzt keine Lust 2 Jahre alten Swingcode auf SWT zu portieren.
Da spring' ich lieber von der Hubschrauberplattform.
mfg,
Martin C.
PS
Das mit dem Sprung von der Plattform meine ich natürlich nicht ernst.
-
07.08.11 22:41 #7SE Tutorials.de Gastzugang
Also da ich ja auch mehr als einen Rechner habe auf dem mein Win7 läuft kann ich ein solches Problem zumindest bei nVid-Karten der 9000er Serie ausschließen *ebenfalls Java7* *9k einfach aus Kosten-Gründen da die Karte keine Leistung bringen soll sondern lediglich 3D-fähigkeiten bei der die On-Board-GPU versagt*.
Dass das deaktivieren des D3D-Rendering den Fehler nicht begebt aber zumindest ein Anfang ist hätte ich so nicht erwartet. Auch der Hinweis von genode das das ControlPanel betroffen ist *hab ich wohl überlesen* lässt auf ein System weites Problem schließen. Das es allerdings bei 3 verschiedenen Systemen auf welchen jeweils die selbe Windows und Java Version läuft das Problem nahezu identisch ist haut mich gerade erlich gesagt etwas aus den Socken.
Erlich gesagt hab ich jetzt keine Idee was es sein könnte , geschweige denn einen Lösungsvorschlag. Da bin ich mal drauf gespannt was der Fehler und vor allem die Lösung ist.
//EDIT
Welches Win7 genau ? Pro oder Ulti ?
-
07.08.11 22:46 #8
- Registriert seit
- Jun 2009
- Beiträge
- 870
Wenn es dir nicht zu viel Aufwand bereitet, probier doch mal OpenJDK statt Suns/Oracles Variante
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Huhu,
Ich werde sogleich das OpenJDK und einige andere Sachen ausprobieren.
Und @SPiKEe:
Ja, anscheinend scheint es wirklich an der Runtime selbst zu liegen.
Um auf deine Frage zurückzukommen:
Ich verwende weder Professional noch Ultimate sondern Home Premium.
Komisch ist nur, dass das Problem auf meiner 9800er auftritt, und bei dir nicht.
Na ja, ich werde diesen Post aktualisieren sobald es etwas neues gibt.
EDIT:
Die Sache mit dem OpenJDK ist mir doch zu aufwändig, da ich die Sache selbst kompilieren muss, worauf ich gerade keinen Bock habe.
Inzwischen habe ich versucht eine Applikation bei deaktiviertem AERO zu starten.
Das Problem tritt immer nochauf, interessant ist jedoch, dass die Füllfarbe nicht mehr Schwarz ist, sondern der "Fensterfarbe" entspricht. In meinem Fall hellblau.
mfg,
Martin C.Geändert von mccae (07.08.11 um 23:10 Uhr)
-
07.08.11 23:24 #10SE Tutorials.de Gastzugang
Naja .. gut ... wie es unter einem "HOME" ist weis ich nicht da ich seit 2000 alles was HOME im Namen hat grundsätzlich erstmal wegwerfen und mir mindestens Pro besorge. Was Vista angeht : Schrott -> Tonne.
Ob es jetzt einen Unterschied macht ob man nun HOME oder Ultimate hat weis ich nicht ... da ich mich persönlich nicht auf HOME herablassen werde da ich einige Funktionen welche nur in Ultimate enthalten sind benötige.
Die Karte in meinem anderen Rechner ist übrigens nur eine 9500er ... auch hier weis ich nicht ob es einen Unterschied macht.
-
Hm,
Home Premium reicht bei Win7, zumindest für mich.
Solche Sachen wie das Eingliedern in eine Domäne im Firmennetzwerk, Lokale Gruppen sowie Gruppenrichtlinien, BitLocker (bessere Alternative: Truecrypt), Multisprachensupport und XP Modus braucht man ja "zu Hause" nicht.
Ich war jahrelang mit Windows XP Pro glücklich, der Wechsel auf Windows 7 musste bei mir aufgrund der unterliegenden Hardware erfolgen.
Unter 7 habe ich mir einfach die Taskleiste verschmälert, Quicklaunch wieder aktiviert sowie mit Classic Shell das gute "alte" klassiche Startmenü aus Win2000 wiederhergestellt.
Ist schon fast wie damals - ich vermisse jedoch immer noch die alten Schriftarten (Tahoma <3).
Auch die lästige "Verwaschung" der Schriftarten mit "ClearType" kann ich überhaupt nicht leiden.
Alles wirkt so unscharf und ermüdet die Augen bereits nach kurzer Zeit.
Ohne ClearType sieht's noch schlimmer aus, da SegoeUI ohne CT "pixelig" aussieht.
Man kann sich nicht ewig gegen das neue Windows wehren.
Der Umstieg von Windows 3.1 auf Windows 95, von Windows 98 auf NT, sowie NT auf XP hat bei mir ewig gedauert.
Irgendwann gewöhnt man sich dran...
-
08.08.11 00:09 #12
- Registriert seit
- Jun 2009
- Beiträge
- 870
Tritt der Fehler mit deaktiviertem AERO bei allen installierten JREs nicht mehr auf?
Du bist nicht der einzige mit diesem Problem, siehe http://stackoverflow.com/questions/2...a-swing-window
und laut http://www.coderanch.com/t/502800/GU...ormal-behavior hängt es direkt mit der Transparenz von Aero zusammen
Noch was: ist bei dir RAM knapp? http://bugs.sun.com/bugdatabase/view...bug_id=6898838Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Der Fehler tritt, wie vorhin erwähnt, bei mir trotz deaktiviertem AERO unter Java 6 und 7 auf.
Nur wird die zu zeichnende Fläche nicht schwarz, sondern nimmt die Farbe des Fensterdesigns an (Grau bei "klassisch", sowie zum Beispiel hellblau bei dem Standard "Basic" Theme).
Was den RAM betrifft, davon ist genug da.
Die Anwendung belegt bei mir je nachdem ob idle oder in Arbeit 67Mb-124Mb an Speicher.
Die JVM alloziert automatisch mehr Speicher (128 zu Beginn), sollte mehr gebraucht werden.
Hm,
Ich werde wohl das Deaktivieren von D3D als temporäre "Lösung" akzeptieren müssen.
-
08.08.11 00:25 #14SE Tutorials.de Gastzugang
Tja ... als "normaler" User braucht man solche Dinge sicher nicht ... aber als Entwickler der seine Maschine fast täglich in anderen Netzen eingliedern muss und der auch mal dierekt auf der Hardware ein virtuelles System braucht aber keine Zeit hat sich dafür eins Retail zu installieren ... für den sind solche Dinge schon wichtig.
Bei einem gebe ich dir allerdings bedingungslos Recht : TrueCrypt ist definitiv die bessere Alternative
-
08.08.11 00:29 #15
- Registriert seit
- Jun 2009
- Beiträge
- 870
Sieht so aus, als wäre dieser Bug http://bugs.sun.com/bugdatabase/view...bug_id=6600226 schon mal behoben worden.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
Ähnliche Themen
-
Div wird beim vergrößern verkleinert?!
Von Major18 im Forum CSSAntworten: 4Letzter Beitrag: 14.02.10, 16:40 -
JTable automatisch vergrößern wenn das zugehörige JFrame vergrößert wird
Von hippo08 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 24.07.09, 14:04 -
JPG-Datei wird beim vergrößern unschön
Von PixelMonster20 im Forum Sonstige Grafik-ProgrammeAntworten: 2Letzter Beitrag: 28.09.08, 15:03 -
Problem beim vergrößern des JComboBox Popup's (nur beim GridBagLayout)
Von mad_dark_angel im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 22.04.06, 17:58 -
Pause beim Vergrößern
Von meste im Forum Flash PlattformAntworten: 6Letzter Beitrag: 02.08.05, 16:36



5Danke

Zitieren
Login





