Можно ли установить все JPanes одинаковым цветом фона одновременно? - PullRequest
2 голосов
/ 21 июня 2019

Я создаю небольшую игру. Я знаю, как установить цвет фона для JPanel.

pane.setBackground(Color.RED);

Моя проблема в том, что у меня BorderPane как макет, и если я хочу разместить что-то на юге, мне нужно создать новый JPane. Я создаю панель Foreach, мне нужно снова установить цвет фона. Мой вопрос, возможно ли установить цвет фона для каждой панели сразу?

Ответы [ 2 ]

5 голосов
/ 21 июня 2019

Вы всегда можете установить цвет основного контейнера на красный, а затем сделать все ваши панели прозрачными с помощью setOpaque(false);

2 голосов
/ 21 июня 2019

Помимо хорошей идеи от Antiossss, вы также можете сделать одно из следующих двух:

  • Как правило, любой контейнер пользовательского интерфейса знает о своих дочерних элементах.Таким образом, вы можете написать некоторый общий код, который (вероятно, рекурсивно) выбирает дочерние элементы некоторого компонента пользовательского интерфейса, и, если это JPanel, установите фон
  • , вероятно, легче сделать: ваш код просто запоминает все JPanels вам небезразличны

Другими словами: если вы хотите относиться ко многим "вещам" аналогичным образом, самое простое решение - иметь поле

Set<JPanel> myPanels = new HashSet<>();

в некоторых ваших «корневых» классах, и каждый раз, когда вы создаете панель ... вы добавляете ее к этому набору, так что, когда вам это нужно, вы можете перейти:

for(JPanel aPanel : myPanels) { aPanel.setBackground(...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...