Java Swing через удаленный рабочий стол - странное, странное сжатие графического интерфейса

14651
ADTC

Я думал, что этот вопрос больше подходит для SuperUser, чем для StackOverflow, потому что он не касается реального программирования на Java, хотя программисты могут столкнуться с этой проблемой. В любом случае, позвольте мне начать с некоторой статистики, прежде чем я задам фактический вопрос:

Ноутбук:

  • Windows 7 x32
  • Разрешение экрана 1024 х 768; Nvidia GeForce Go 6200
  • Подключен к рабочему столу через специальную беспроводную сеть
  • Доступ в интернет через рабочий стол

Рабочий стол:

  • Windows 7 x64
  • Разрешение экрана 1920 x 1080
  • Подключен к ноутбуку через специальную беспроводную сеть
  • Доступ в интернет через кабельный модем

Я подключаюсь к своему ноутбуку через удаленный рабочий стол со своего рабочего стола, чтобы использовать преимущества большого экрана. Я занимаюсь программированием на своем ноутбуке (по причинам портативности). Все остальное работает гладко и быстро по удаленному рабочему столу, так как оба компьютера подключены напрямую по беспроводной сети.

Единственная проблема заключается в следующем: приложения Java Swing не отображают графический интерфейс должным образом. Я приобрел приложение Java Swing и отлаживаю его в Eclipse. Вот что я получил, запустив приложение:

Java Swing через удаленный рабочий стол - странное, странное сжатие графического интерфейса

Похоже, что нет ничего плохого в том приложении с графическим интерфейсом, которое я отлаживаю, потому что панель управления Java демонстрирует ту же проблему.

Я искал высоко и низко в Google об этом; самое близкое, что я пришел к решению, это . Но, к сожалению, использование -Dsun.java2d.nodraw=trueне имеет никакого эффекта вообще.

Это происходит только через удаленный рабочий стол. Я пробовал локально, и приложения с графическим интерфейсом отображаются правильно. Для меня это не проблема, поскольку я могу прекратить использование удаленного рабочего стола при разработке приложений Java Swing. Тем не менее, я хотел бы знать, если кто-нибудь сталкивался с этим и нашел какое-либо решение.

PS: Все программное обеспечение (Eclipse, Java JRE и т. Д.) Является последними версиями.

4
Какие настройки вы используете для отображения, опыта и т. Д. Под опциями (подключение к удаленному рабочему столу)? Rob 12 лет назад 0
Спасибо за редактирование подмастерье. @Mike: полноэкранный режим, высочайшее качество (32 бита), передача звука ** выключена **, совместное использование устройства / ресурса ** полностью выключено **, высокоскоростной широкополосный доступ, сглаживание шрифтов, композиция на рабочем столе, визуальные стили. (Это все) ADTC 12 лет назад 0
Я не нашел решения, чтобы исправить это, но после дальнейшего тестирования я обнаружил, что приложения с графическим пользовательским интерфейсом Java работают должным образом, когда я устанавливаю глубину цвета на значение, меньшее «Максимальное качество (32 бита)» (доступны 24 варианта, 16 бит и 15 бит.) Java имеет эту проблему, только когда я установил глубину цвета на 32 бита. _ Может ли кто-нибудь, использующий Remote Desktop, проверить это, чтобы определить, является ли это ошибкой в ​​Java VM? _ ADTC 12 лет назад 0

6 ответов на вопрос

6
RJ Bobin

Я просто изменил цвет на 32-битный в своем рабочем столе и RDP-клиенте, и Java выглядела идеально.

Сделал трюк для меня! Спасибо вам большое! Arturas M 7 лет назад 0
5
JayFar

I had the same problem and changing the color depth did not work for me. This:

-Dsun.java2d.d3d=false 

seemed to work for me:

Не уверен, почему это было понижено. Я только попробовал это, потому что у меня была та же самая проблема, и это решило проблему. +1 от меня StormeHawke 10 лет назад 0
2
Rob

Я могу вам сказать, что в прошлом мне приходилось устанавливать глубину цвета чуть ниже максимальной настройки при просмотре определенных приложений через подключение к удаленному рабочему столу, например Eclipse.

Что касается возможной ошибки в Java VM, обратитесь к этому ответу для получения дополнительной информации. Я очень сомневаюсь, что это так, поскольку вы не получили никаких сообщений об ошибках, касающихся невозможности создания виртуальной машины Java ... но это все же стоит проверить!

Странно, но Eclipse (Indigo SR1) работает нормально. Я бы все еще придерживался своих предположений, что это ошибка в Java VM, потому что, когда компьютер использует драйвер дисплея RDP с 32-битной глубиной цвета, эта проблема возникает, но когда он использует драйвер дисплея Nvidia, это не происходит , Возможно, у JVM возникают проблемы при взаимодействии с драйвером RDP в 32-битном цвете (если что-то подобное происходит на самом деле), в то время как нет проблем с 24-битным и ниже? ADTC 12 лет назад 0
Это меня не удивляет (RDP vs. Nvidia), особенно после сравнения характеристик обоих драйверов дисплея. Я думаю, что проблема с JVM была бы проблемой памяти, но опять же, это просто предположение. Независимо от того, все ли работает сейчас правильно? Rob 12 лет назад 0
что вы имеете в виду "сравнение характеристик обоих драйверов дисплея"? Драйвер дисплея RDP не для какого-либо реального оборудования. Это драйвер, используемый Windows (удаленного клиента) при входе в сеанс удаленного рабочего стола. Так что я не понимаю, что вы подразумеваете под спецификациями драйвера RDP. "теперь все работает нормально?" ** Нет ** в 32-битной глубине цвета. Частично да в чем-то ниже (как объяснено ранее). Я хочу использовать 32-битную глубину цвета, потому что оконные рамки переключаются на основную тему в любом более низком положении. PS: JVM не жалуется на дефицит памяти. Это просто портит Swing GUI. ADTC 12 лет назад 0
Меня смутили ваши высказывания «когда компьютер использует драйвер дисплея RDP» и «когда он использует драйвер дисплея Nvidia» ... звучало так, как будто вы их заменяли или что-то в этом роде. Виноват. Под спецификациями я подразумеваю их возможности. Не обращая внимания на мой предыдущий пост, я неверно истолковал ваше объяснение. Я собираюсь продолжить исследования и дам вам знать, если что-нибудь найду. Rob 12 лет назад 0
Ну, я ничего не нашел. Как указывалось ранее, я был в таких ситуациях (я также понимаю ваше разочарование), как это раньше, и, по крайней мере, я знал, что моя программа работает правильно, когда я выключил настройки на глубине. _Sigh_, я тоже очень хочу, чтобы он отображался правильно при использовании более высоких настроек. Rob 12 лет назад 0
Все в порядке @Mike, спасибо за ваше время и усилия. Во всяком случае, как я уже сказал, это не имеет большого значения для меня. Просто интересно, есть ли решение для этого. Я могу жить с 24-битной глубиной цвета, когда это необходимо, хотя мне это не нравится. (Странно, они до сих пор называют это «True Color») ADTC 12 лет назад 0
1
user43308

My same problem was fixed after I logged off windows and logged on again for the user connected to Remote Desktop (NOT merely disconnecting from Remote Dekstop).

1
user325595

У меня была ситуация, когда мой графический интерфейс Java не мог полностью рисовать, то есть все содержимое главного окна было устаревшим и не обновлялось при работе на удаленном рабочем столе.

Добавление

-Dsun.java2d.d3d = ложь

также исправил это для меня.

0
user946062

Я пытался запустить образ 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 установите цвет Макс. Глубина до высокого цвета 16 бит - не более (не 24 бита, не 32 бита)! Затем вы увидите содержимое таких Приложений / Программ, использующих Swing / Awt / Java, в которых этот контент показывает проблему!

Похожие вопросы