2009-05-11 12 views
5

Pracuję nad aplikacją Swing (obecnie działającą w Java 6 aktualizacja 11), która ma sporadyczne problemy z odświeżaniem farby (np. Istnieją artefakty itp.). Zdarza się to tylko niektórym użytkownikom naszej aplikacji, ale nie innym.Problem z malowaniem w aplikacji Java Swing w języku Java 1.6

Po przeprowadzeniu badań odkryłem, że ustawienie właściwości sun.java2d.d3d na false może pomóc i w rzeczywistości pomogło jednemu z naszych użytkowników.

Teraz, gdy inni użytkownicy skarżą się na problem, myślę o ustawieniu usługi na false dla wszystkich użytkowników.

Moje podstawowe pytania są następujące:

co dokładnie jest przyczyną tego? Czy to jest karta wideo? Czy to jest kierowca? Czy to błąd firmy Sun? (takie jak http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6635462) Połączenie wszystkich trzech?

Innymi słowy, najlepiej jest po prostu wyłączyć tę właściwość lub dotyczy ona tylko niektórych kart wideo, które naprawiłaby aktualizacja najnowszego sterownika?

+0

Ten problem często występuje podczas uruchamiania środowiska Java w systemie VMWare. – user3553031

Odpowiedz

2

Java wprowadziła w aktualizacji R6 10 potok renderujący grafikę opartą na Direct3D. Zgodnie z opisem wersji here obsługuje tylko karty NVidia i ATI, co oznacza, że ​​każdy, kto nie używa tych kart, może mieć problem. Ponieważ jest to ostatnia innowacja, sugerowałbym, że każdy, kto używa starych sterowników dla tych kart, może również mieć problemy. Aktualizacja sterownika wideo prawdopodobnie naprawi pierwszy przypadek, ale nie ostatni.

Jeśli ustawisz wartość sun.java2d.d3d na wartość false, najgorsze, co może się zdarzyć, jest to, że niektórzy użytkownicy nie osiągną wydajności, której teoretycznie mogliby użyć. Będziesz musiał zrównoważyć to, czy jest to lepsze od problemów, które widzisz w danym momencie.

+0

Użytkownik, który pierwszy raz miał problem, miał kartę ATI Radeon XPress 200, ale nie sprawdziłem, czy ma najnowszy sterownik. Aplikacja jest ładną "standardową" aplikacją Swing, tzn. Nie ma operacji 3D lub "nietypowych" operacji malowania. – Avrom

+0

Można by pomyśleć, że automatycznie wyłączy się dla nieobsługiwanych kart wideo, zakładając, że jest to możliwe. – Avrom

1

Czy wszystkie operacje zmiany obrazu i modelu są wykonywane na EDT (np. Zmiana TableModel itp.)?