Java Swing через удаленный рабочий стол - странное, странное сжатие графического интерфейса
Я думал, что этот вопрос больше подходит для SuperUser, чем для StackOverflow, потому что он не касается реального программирования на Java, хотя программисты могут столкнуться с этой проблемой. В любом случае, позвольте мне начать с некоторой статистики, прежде чем я задам фактический вопрос:
Ноутбук:
- Windows 7 x32
- Разрешение экрана 1024 х 768; Nvidia GeForce Go 6200
- Подключен к рабочему столу через специальную беспроводную сеть
- Доступ в интернет через рабочий стол
Рабочий стол:
- Windows 7 x64
- Разрешение экрана 1920 x 1080
- Подключен к ноутбуку через специальную беспроводную сеть
- Доступ в интернет через кабельный модем
Я подключаюсь к своему ноутбуку через удаленный рабочий стол со своего рабочего стола, чтобы использовать преимущества большого экрана. Я занимаюсь программированием на своем ноутбуке (по причинам портативности). Все остальное работает гладко и быстро через удаленный рабочий стол, так как оба компьютера подключены напрямую по беспроводной сети.
Единственная проблема заключается в следующем: приложения Java Swing не отображают графический интерфейс должным образом. Я приобрел приложение Java Swing и отлаживаю его в Eclipse. Вот что я получил, когда запустил приложение:
Похоже, что нет ничего плохого в том приложении с графическим интерфейсом, которое я отлаживаю, потому что панель управления Java демонстрирует ту же проблему.
Я искал высоко и низко в Google об этом; самое близкое, что я пришел к решению, это. Но, к сожалению, использование -Dsun.java2d.nodraw=true
не имеет никакого эффекта вообще.
Это происходит только через удаленный рабочий стол. Я пробовал локально, и приложения с графическим интерфейсом отображаются правильно. Для меня это не проблема, так как я могу прекратить использование удаленного рабочего стола при разработке приложений Java Swing. Тем не менее, я хотел бы знать, если кто-нибудь сталкивался с этим и нашел какое-либо решение.
PS: Все программное обеспечение (Eclipse, Java JRE и т. Д.) Является последними версиями.
6 ответов
Я могу вам сказать, что в прошлом мне приходилось устанавливать глубину цвета чуть ниже максимальной настройки при просмотре определенных приложений через подключение к удаленному рабочему столу, например Eclipse.
Что касается возможной ошибки в Java VM, обратитесь к этому ответу для получения дополнительной информации. Я очень сомневаюсь, что это так, поскольку вы не получили никаких сообщений об ошибках, касающихся невозможности создания виртуальной машины Java... но это все равно стоит проверить!
У меня была та же проблема, и изменение глубины цвета не работало для меня. Это:
-Dsun.java2d.d3d=false
казалось, работает на меня:
Я просто изменил цвет на 32-битный в своем рабочем столе и RDP-клиенте, и Java выглядела идеально.
У меня была ситуация, когда мой Java GUI не мог полностью рисовать, то есть все содержимое главного окна было устаревшим и не обновлялось при работе на удаленном рабочем столе.
Добавление
-Dsun.java2d.d3d= ложь
также исправил это для меня.
Моя же проблема была исправлена после того, как я вышел из системы и снова вошел в систему для пользователя, подключенного к удаленному рабочему столу (НЕ просто отключаясь от удаленного декстопа).
Я попытался запустить образ Docker с автоматической установкой IntelliJ или Eclipse в контейнере, но у меня всегда было пустое окно с контентом для конфиденциальности, лицензии и установки. Я сделал это на компьютере CentOS 7, подключенном через RDP-соединение.
Затем я увидел, что локально установленное приложение OpenJdk Privacy Tool имеет ту же проблему, оно запускается, но не показывает содержимое приложения, ни кнопок, ни текста... просто пустой белый экран.
Я сделал поиск по Google и найти некоторые обходные пути, которые все не помогают.
xhost + initx startx _JAVA_AWT_WM_NONREPARENTING = 1 экспорт DISPLAY=localhost:10.0 (и другие варианты решения этой проблемы)
Я пытался установить compiz и так далее... ничто не помогает!
Решение:
При подключении через RDP к CentOS Machine, установите Color max. Глубина до высокого цвета 16 бит - не более (не 24 бита, не 32 бита)! Затем вы увидите содержимое таких Приложений / Программ, использующих Swing / Awt / Java, в которых этот контент показывает проблему!