为什么setLayout方法不能与JPanel的ArrayList一起使用

时间:2017-05-18 03:11:15

标签: java swing arraylist layout-manager

我很擅长摇摆,我对布局管理器有疑问。当我使用setLayout()为单个容器放置布局管理器时,我没有任何问题。例如:

JPanel oneContainer = new JPanel();
oneContainer.setLayout(new GridBagLayout());

这很好用。

我想要做的是在ArrayList中为ever容器设置一个特定的布局管理器。 如果没有循环遍历每个元素,有没有办法做到这一点。

示例:

ArrayList<JPanel> multipleContainers = new ArrayList<>();
multipleContainers.setLayout(new GridBagLayout());

(或类似的东西,你明白了,我知道所提供的代码显然是错误的,我也意识到要为单个ArrayList元素设置布局管理器,我只想添加&#34; multipleContainers&#34;)TIA

之后的.get(num)

2 个答案:

答案 0 :(得分:2)

抱歉!你只需要把它搞砸就行了。:)实际上,对于每个循环来说并不是那么难:

for (JPanel p : multipleContainers)
    p.setLayout(new GridBagLayout());

或者,正如你已经猜测的那样,那是老式的方式:

for (int i = 0; i < multipleContainers.size(); ++i)
    multipleContainers.get(i).setLayout(new GridBagLayout());

答案 1 :(得分:0)

我注意到multipleContainers的类型是ArrayList,而不是JPanel。所以setLayout()在这里不起作用。

如果你想setLayout()有效,你需要迭代ArrayList来获取面板。