2009-05-15 63 views
5

Một trong những người dùng chương trình GUI Java swing mà tôi đã viết đang gặp sự cố khi cửa sổ xoay chính không hiển thị đúng màn hình và GUI bị đóng băng. Dưới đây là một so sánh các ảnh chụp màn hình trên màn hình của mình (trên cùng) và những gì được cho là hiển thị (dưới):Cửa sổ xoay Java bị hỏng

alt text http://www.shapecollage.com/temp/SwingCorruption.jpg

Ông đang chạy Windows XP SP3 với Java 1.6.0_13 và đồ họa của ông là một thẻ ATI X1600 với thiết lập màn hình kép.

Chương trình (nếu bạn muốn thử nghiệm cho chính mình) là tại địa chỉ:
www.shapecollage.com/download.html

Tôi có vài ngàn người sử dụng và không ai khác đã báo cáo lỗi này và tôi đã thử nghiệm nó triệt để trên Windows XP. Bất kỳ việc tính toán nào được thực hiện trong một chuỗi riêng biệt từ luồng GUI thông thường và chương trình hoạt động trên nhiều máy tính khác, vì vậy tôi không nghĩ đó là vấn đề với chính chương trình đó, mà đúng hơn là có vấn đề với thiết lập cụ thể của mình.

Có ai nhìn thấy loại lỗi này trước trên hệ thống hoặc có bất kỳ đề xuất nào về những gì có thể sai trên hệ thống của người dùng này có thể gây ra sự cố như vậy không?

Cảm ơn,
Vincent

+1

Thú vị. Một vấn đề như vậy đã được báo cáo với tôi sau một hoặc hai năm; Tôi không bao giờ có thể tái tạo nó, vì vậy tôi đóng nó như là một lỗi trình điều khiển. Tôi sẽ quan tâm để xem liệu có câu trả lời hay nào xuất hiện ở đây không. –

+0

Yikes! Đối với nó được rằng xấu nó phải là một điều jvm vs đồ họa điều khiển - Tôi nghi ngờ có rất nhiều bạn có thể làm. – Tom

+0

Sau khi chương trình được tải, có một số nhỏ, nhưng đồ tạo tác rõ ràng trong rendering, và sau đó khi nỗ lực được thực hiện để thực sự sử dụng giao diện, nó dường như đi điên và nó đóng băng. Tôi không thể sao chép điều này trên máy tính để bàn của tôi hoặc một số máy tính khác. – Vincent

Trả lời

2

Chúng tôi gặp sự cố rất giống với sự cố khi cập nhật trình điều khiển đồ họa. Vấn đề có thể đến từ việc thiết lập màn hình kép dẫn đến tham nhũng VRAM, vì vậy khách hàng của bạn có thể thử nếu nó sẽ hoạt động tốt hơn chỉ với một màn hình duy nhất. Mặc dù bạn có thể mong đợi Java sẽ không phụ thuộc nhiều vào phần cứng, ứng dụng nhạy cảm đồ họa của chúng tôi luôn quản lý BSOD khi chạy qua một loại máy chiếu cụ thể ...

+0

Người dùng cập nhật trình điều khiển cạc đồ hoạ của mình và nó đã khắc phục sự cố. – Vincent

0

Swing không phải là thread an toàn, vì vậy nếu bạn đang làm việc vẽ bất cứ nơi nào khác với thread GUI, bạn có thể mong đợi các loại điều này.

+0

Kết xuất chỉ được thực hiện trong luồng GUI. Chương trình hoạt động tốt trên hàng nghìn máy tính khác. – Vincent

1

Tôi chưa thấy loại đồ họa bị hỏng cụ thể đó, nhưng tôi đã thấy các vấn đề về đồ họa Java trên Windows biến mất khi tăng tốc phần cứng trong bảng điều khiển hiển thị mở rộng bị giảm.

0

Tôi đã thấy đồ họa bị hỏng như vậy, nhưng không bao giờ trong java. Những nơi tôi đã nhìn thấy nó nằm trong cửa sổ vẽ/etc code, và tiling và tuyết nhìn thường chỉ ra một cái gì đó giống như nói với mã vẽ hình ảnh mà bạn sẽ vẽ một hình ảnh của một kích thước nhất định và độ sâu bit, nhưng sau đó điền bộ đệm hình ảnh với độ sâu bit khác nhau. như điền mảng byte với dữ liệu từ một nguồn RGBA nguyên và đặt nó vào một đích RGB nguyên?

nhưng từ ảnh chụp màn hình, người dùng có vẻ như họ cũng đang chạy một số loại ứng dụng khác, vì có nút bổ sung bằng các nút thu nhỏ/tối đa/đóng, vì vậy một số ứng dụng bên thứ ba khác đang sửa đổi cửa sổ . Có lẽ điều đó rối tung với nó?

Nếu không, tôi sẽ nói vấn đề trình điều khiển. Luôn có một số giải pháp như vô hiệu hóa bản vẽ d3d hoặc một số tối ưu hóa vẽ khác mà VM thực hiện tự động ngay bây giờ, có thể giải quyết nó?

6

Có thể có sự tương tác có vấn đề giữa Java và trình điều khiển đồ họa và/hoặc phần cứng đồ họa.

several flags that can influence how Java draws to the screen.

Bạn có thể muốn cố gắng để khởi động các ứng dụng với bất kỳ của những lá cờ:

  • -Dsun.java2d.opengl=true
  • -Dsun.java2d.d3d=false
  • -Dsun.java2d.noddraw=true

Những lá cờ chuyển đường ống OpenGL, lần lượt sử dụng Direct3D và vô hiệu hóa việc sử dụng DirectDraw tương ứng.

Nếu một trong số đó giải quyết được vấn đề của bạn, thì bạn có thể xem xét việc gửi lỗi bằng ánh nắng mặt trời, vì đó có thể không phải là ứng dụng có lỗi ở đây.

+1

Tôi gặp sự cố liên quan trong đó -Dsun.java2d.d3d = false đã giải quyết vấn đề. Xem http://stackoverflow.com/questions/848481/problem-with-painting-in-java-swing-app-in-java-1-6 – Avrom

+1

Năm 2015: Trong Ubuntu 14.04, tham nhũng đồ họa trong tất cả các điều khiển gui, trong ứng dụng của riêng tôi và trong các ứng dụng của bên thứ ba mà tôi sử dụng. Bắt đầu từ bất kỳ tệp nào có -Dsun.java2d.opengl = true đã giải quyết được sự cố. Điều này xảy ra với thẻ NVidia, tôi nghĩ Intels là OK. –

Các vấn đề liên quan