Почему наше приложение Java не отображает окна на дополнительном мониторе? - PullRequest
11 голосов
/ 30 августа 2010

У нас есть клиент Java / Swing, который существует уже несколько лет.Когда я перешел с XP на Vista (клиент работает ТОЛЬКО в Windows), я заметил, что всякий раз, когда на моем дополнительном мониторе создается новое окно (обычно потомок JFrame), оно изначально отображается пустым, то есть вместо обычного содержимогоокно, это просто сплошной блок серого цвета.Если я затем перетащу это окно на основной монитор, то в тот момент, когда оно пересекает границу монитора, оно отрисовывается правильно, и я могу перетащить его обратно на дополнительный монитор.Если окно создано на основном мониторе, оно всегда появляется идеально.У меня НИКОГДА не было этой проблемы на XP, только на Vista.Я не могу с лёгкостью протестировать его на Windows 7, не имея компьютера с двумя мониторами Windows 7.

У кого-нибудь есть какие-нибудь идеи?Возможно, это известная ошибка Java?Я также использую самый последний Java 1.6 SDK.

1 Ответ

15 голосов
/ 31 августа 2010

Убедитесь, что видеодрайвер и JRE обновлены. (Возможно иметь текущий JDK, но старый JRE.)

Java делегирует буферизацию DirectDraw и / или Direct3D. Вы можете отключить это с помощью следующих параметров JVM:

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

Есть и другие подробности здесь .

Если основной монитор находится справа от дополнительного монитора, позиции экрана на дополнительном мониторе будут иметь отрицательные значения X. (Аналогично, если вторичное значение выше первичных позиций будет иметь отрицательные значения Y.) Возможно, существует код, который не обрабатывает отрицательные значения.

...