Подтвердить что ты не робот

Компоненты пользовательского интерфейса java-программ, отображаемые в виде пустых полей

Когда я запускаю на своем компьютере программы Java (такие как DbVisualizer и OpenProj), некоторые компоненты пользовательского интерфейса, такие как кнопки, изображения, флажки, полосы прокрутки и т.д., отображаются как пустые поля. Не редко некоторые из этих компонентов появляются, как правило, при открытии программы, а затем исчезают, когда вы наводите на них курсор.

Я уже обновил JRE и видеодрайверы, а также изменил JAVA_OPTS с помощью -Dsun.java2d.noddraw=true;-Dsun.java2d.d3d=false;, как рекомендовано на форумах Java, но ни одно из этих предлагаемых решений пока не работает.

Я не считаю, что это проблема с ОС, так как я проверил некоторые другие ПК с одинаковой конфигурацией ОС (Windows Vista) и аппаратного обеспечения, и многие из них не представляют эту проблему.

Снимок экрана этой ситуации можно увидеть здесь:

GUI Blank Boxes

Любые идеи?

4b9b3361

Ответ 1

Те JAVA_OPTS должны быть разделены пробелами, а не полуколонами!

Подключитесь к приложению с помощью jVisualVM и убедитесь, что раздел "Аргументы JVM" содержит все необходимые параметры.

Ответ 2

При использовании базовой темы Windows я часто встречал множество графических сбоев. Перемещение окна создало бы след за собой поверх фоновых окон, и элементы управления пользовательским интерфейсом время от времени не появлялись до тех пор, пока они не перепутались.

Как уже было предложено, попробуйте использовать тему aero windows и просто отключите прозрачность, если вам не нравится внешний вид aero.

Ответ 3

Это больше похоже на проблему с графическим драйвером. Обратите внимание, что недостающими являются изображения (значки, флажки), которые выводятся путем передачи данных растрового изображения непосредственно на графическую карту. В этом случае sun.java2d.noddraw=false и sun.java2d.d3d=false являются скорее хаками.

Что бы я сделал:

  • проверьте, использую ли я последнюю версию Java (не помешало бы перейти на 64-битную Java, если вы используете 64-битную систему).
  • проверьте графические драйверы, убедитесь, что они являются последней версией
  • проверить пакеты обновления Windows

Также попробуйте использовать Look and feel; возможно, это поможет.

Ответ 4

Я подозреваю, что отключение 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