1

У меня очень странная проблема с графическим интерфейсом Java, который я создал на работе. Это так странно, я даже не знаю, с чего начать искать помощи !!

У нас есть автономная система в удаленном месте, состоящая из ПК с Windows, под управлением XP и компьютера SuSE Linux. Я создал графический интерфейс Java, который запускает некоторые скрипты bash на компьютере с Linux. Графический интерфейс запускается с компьютера с Windows, потому что пользователь не является пользователем Linux. Графический интерфейс был создан для замены сценариев, которые предоставляли пользователю подсказки командной строки для предоставления входных данных основным сценариям обработки.

Пользователь нажимает значок на рабочем столе Windows, который запускает пакетный файл DOS (* .bat). Пакетный файл использует plink с сохраненным сеансом PuTTY, чтобы подключиться к компьютеру Linux и выполнить команду «java -jar XXX.jar» для запуска графического интерфейса. Графический интерфейс отображается на ПК под управлением Windows, поскольку на компьютере под управлением ОС Windows работает сервер Cygwin/ XX.

Хорошо. Теперь для странности. Если я оставлю графический интерфейс в том месте, где он изначально появляется, все будет хорошо. Если переместить графический интерфейс, выпадающие меню (выпадающие списки и раскрывающиеся списки меню) перестают работать должным образом. И ТОЛЬКО выпадающие меню. Все остальное работает нормально (кнопки, текстовые поля, ...). Если я верну GUI обратно в исходное положение, все работает нормально. Если щелкнуть, удерживать и перетащить курсор мыши туда, где изначально появился GUI (оставив GUI там, где я его перенес), раскрывающиеся меню работают правильно.

Сначала я подумал, что у меня проблема с тем, как я инициализировал выпадающие меню, но я больше не уверен в этом. Мне интересно, происходит ли что-то странное с установками windows <-> putty <-> linux или Xwin.

Вклад в неспособность решить эту проблему заключается в том, что я не могу воспроизвести это поведение на работе. К сожалению, у нас нет точной копии внешней системы; Я тестирую / собираю этот графический интерфейс на компьютере с XP на Debian Linux.

Как кто-нибудь видел что-нибудь подобное? Любое предложение относительно того, что может происходить здесь?

Спасибо раз миллиард

Билл

3 ответа3

1

В Java 1.7 вы можете использовать -Dsun.java2d.xrender=true при использовании удаленного X Display. Это делает Java осведомленным, что работает в X. См. Http://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html.

0

Это может быть связано с аппаратным ускорением Java 2D, графической системы Java.

Попробуйте отключить любое аппаратное ускорение, добавив следующую опцию командной строки процесса Java:

-Dsun.java2d.d3d=false

Существует также полная ссылка на Java 2D настройки здесь. Отключение Direct 3D сделает пользовательский интерфейс более медленным, но для простых пользовательских интерфейсов с просто меню и без анимации это не должно иметь значения.

0

Я не думаю, что запуск Java с помощью перенаправления X - это хорошая идея.

Почему бы вам не поместить программу Java на ПК с Windows и использовать ее для запуска plink и запуска команды? Если у вас есть исходный код Java-программы, добавьте класс, который оборачивает и заменяет Runtime.getRuntime().exec() и помещает plink перед командной строкой. Тогда, может быть, вы можете немного поработать над классом, чтобы использовать один сеанс plink для всего. Затем вы также можете создать другой класс с тем же интерфейсом, но не добавите plink чтобы ваша Java-программа могла работать как в Windows, так и в Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .