tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
19
ZUGRIFFE
596
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    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)
    JFrame beim Vergrößern schwarz?!-swingresizeproblem.jpg

    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)
     

  2. #2
    SE 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
    Code :
    1
    
    -Dsun.java2d.d3d=false
    zu deaktivieren. Bei verwenden von OpenGL statt D3D treten unter Umständen ebenfalls Darstellungsfehler auf wesshalb ich von dieser Option ebenfalls abrate.
    mccae bedankt sich. 

  3. #3
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  4. #4
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    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
     

  5. #5
    genodeftest genodeftest ist offline Mitglied Brillant
    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)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  6. #6
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    Hallo,
    Zitat Zitat von genodeftest Beitrag anzeigen
    Welche JREs/JDKs hast du probiert?
    Alles auf deinem Windows 7 64Bit?
    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.
     

  7. #7
    SE 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 ?
     

  8. #8
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Wenn es dir nicht zu viel Aufwand bereitet, probier doch mal OpenJDK statt Suns/Oracles Variante
    mccae bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  9. #9
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    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)
     

  10. #10
    SE 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.
     

  11. #11
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    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...
     

  12. #12
    genodeftest genodeftest ist offline Mitglied Brillant
    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=6898838
    mccae bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  13. #13
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    Zitat Zitat von genodeftest Beitrag anzeigen
    Tritt der Fehler mit deaktiviertem AERO bei allen installierten JREs nicht mehr auf?
    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.
     

  14. #14
    SE 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
     

  15. #15
    genodeftest genodeftest ist offline Mitglied Brillant
    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.
    mccae bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

Ähnliche Themen

  1. Div wird beim vergrößern verkleinert?!
    Von Major18 im Forum CSS
    Antworten: 4
    Letzter Beitrag: 14.02.10, 16:40
  2. JTable automatisch vergrößern wenn das zugehörige JFrame vergrößert wird
    Von hippo08 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 24.07.09, 14:04
  3. JPG-Datei wird beim vergrößern unschön
    Von PixelMonster20 im Forum Sonstige Grafik-Programme
    Antworten: 2
    Letzter Beitrag: 28.09.08, 15:03
  4. Problem beim vergrößern des JComboBox Popup's (nur beim GridBagLayout)
    Von mad_dark_angel im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 22.04.06, 17:58
  5. Pause beim Vergrößern
    Von meste im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 02.08.05, 16:36

Stichworte