Swing - Изменение темы Windows сбрасывает пользовательские границы, вставки и фоны - PullRequest
0 голосов
/ 13 июня 2018

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

Например, у нас есть JScrollPane s, где мы установили Border до null.Каждое JScrollPane s Border сбрасывается до своего пользовательского значения, которое является чем-то отличным от null.

Установка данной клавиши с помощью UIManager.put(...) также не дает никакого эффекта, так как UIManager значения не применяются к таким сборам.

Есть ли способ обойти эти автоматические сбросы, кроме написания собственного L & F, который потребовал бы слишком много времени для таких минимальных преимуществ, есть ли способ решить эту проблему?

Некоторая информация о времени выполнения (на случай, если кто-то захочет узнать):

  • ОС: Windows 10, 64-битная
  • JDK: 8u172, 64-битная

1 Ответ

0 голосов
/ 13 июня 2018

Сброс Look-n-Feel обеспечивает глобальный сброс всех границ, цветов, шрифтов и т. Д. Особенно, когда они сбрасываются до null.Поэтому, если вы хотите защитить свои границы от этого сброса, вам необходимо заменить:

myComponent.setBorder(null);

на

myComponent.setBorder(BorderFactory.createEmptyBorder());
...