是否可以一次将所有JPanes设置为相同的背景颜色?

时间:2019-06-21 13:56:31

标签: java swing

我正在创建一个小游戏。我知道如何为JPanel设置背景色。

pane.setBackground(Color.RED);

我的问题是,我有一个BorderPane作为布局,如果我想在南部放置一些东西,我需要创建一个新的JPane。我创建的Foreach窗格需要再次设置背景色。我的问题是,是否可以一次为每个窗格设置背景颜色?

2 个答案:

答案 0 :(得分:5)

您总是可以将主容器的颜色设置为红色,然后使用setOpaque(false)使所有面板透明;

答案 1 :(得分:2)

除了Antiossss的好主意之外,您也可以执行以下两项操作之一:

  • 通常,任何UI容器都知道其子级。因此,您可以编写一些通用代码(大概以递归方式)来获取某个UI组件的子代,如果它是JPanel,则设置背景
  • 可能更容易做到:您的代码只需记住您关心的所有JPanels

换句话说:当您想以相似的方式对待许多“事物”时,最简单的解决方案是拥有一个字段

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

在某些“根”类中,每次创建面板时,都将其添加到该集合中,以便在需要它们时可以去:

for(JPanel aPanel : myPanels) { aPanel.setBackground(...