просто потому, что изменения UIDefaults
действительны только для вновь созданных компонентов
, чтобы ваша функция работала, вам нужно перезапустить приложение, а затем перед запуском графического интерфейса изменить фонпо умолчанию в UIManager
, или вам придется делать это вручную (панель за панелью).
если вы сделаете это вручную, рекурсия очень поможет, как это
private static void loopForPanel(Container c, Color col) {
synchronized (c.getTreeLock()) {
for (Component com : c.getComponents()) {
if (com instanceof JPanel) {
com.setBackground(col);
}
if (com instanceof Container) {
loopForPanel((Container) com,col);
}
}
}
}
затем в вашем методе changeColourScheme
передайте саму рамку для метода loopForPanel
нужного цвета.