Ответ 1
Те JAVA_OPTS должны быть разделены пробелами, а не полуколонами!
Подключитесь к приложению с помощью jVisualVM и убедитесь, что раздел "Аргументы JVM" содержит все необходимые параметры.
Когда я запускаю на своем компьютере программы Java (такие как DbVisualizer и OpenProj), некоторые компоненты пользовательского интерфейса, такие как кнопки, изображения, флажки, полосы прокрутки и т.д., отображаются как пустые поля. Не редко некоторые из этих компонентов появляются, как правило, при открытии программы, а затем исчезают, когда вы наводите на них курсор.
Я уже обновил JRE и видеодрайверы, а также изменил JAVA_OPTS с помощью -Dsun.java2d.noddraw=true;-Dsun.java2d.d3d=false;
, как рекомендовано на форумах Java, но ни одно из этих предлагаемых решений пока не работает.
Я не считаю, что это проблема с ОС, так как я проверил некоторые другие ПК с одинаковой конфигурацией ОС (Windows Vista) и аппаратного обеспечения, и многие из них не представляют эту проблему.
Снимок экрана этой ситуации можно увидеть здесь:
Любые идеи?
Те JAVA_OPTS должны быть разделены пробелами, а не полуколонами!
Подключитесь к приложению с помощью jVisualVM и убедитесь, что раздел "Аргументы JVM" содержит все необходимые параметры.
При использовании базовой темы Windows я часто встречал множество графических сбоев. Перемещение окна создало бы след за собой поверх фоновых окон, и элементы управления пользовательским интерфейсом время от времени не появлялись до тех пор, пока они не перепутались.
Как уже было предложено, попробуйте использовать тему aero windows и просто отключите прозрачность, если вам не нравится внешний вид aero.
Это больше похоже на проблему с графическим драйвером. Обратите внимание, что недостающими являются изображения (значки, флажки), которые выводятся путем передачи данных растрового изображения непосредственно на графическую карту. В этом случае sun.java2d.noddraw=false
и sun.java2d.d3d=false
являются скорее хаками.
Что бы я сделал:
Также попробуйте использовать Look and feel; возможно, это поможет.
Я подозреваю, что отключение DirectDraw устранит это, и ваша попытка отключить его не удалась.
Как отметил Райан, параметры выглядят некорректно. Удалите точки с запятой и поместите пробел между ними или, еще лучше, используйте sun.java2d.d3d=false
. Флаг sun.java2d.noddraw
устарел Java SE6u10, а установка true теперь имеет тот же эффект, что и установка sun.java2d.d3d=false
. Нет необходимости устанавливать оба параметра.
Эффект неправильного форматирования можно увидеть в коде ниже:
public class WrongArgs {
public static void main(String[] args) {
System.out.println("sun.java2d.noddraw: " + System.getProperty("sun.java2d.noddraw"));
System.out.println("sun.java2d.d3d: " + System.getProperty("sun.java2d.d3d"));
}
}
Запуск этого кода с помощью args: "-Dsun.java2d.noddraw = true; -Dsun.java2d.d3d = false;" производит:
sun.java2d.noddraw: true; -Dsun.java2d.d3d = false;
sun.java2d.d3d: null
Работа с args "-Dsun.java2d.noddraw = true -Dsun.java2d.d3d = false"
sun.java2d.noddraw: true
sun.java2d.d3d: false