2017-05-18 11 views
0

スイングが新しく、レイアウトマネージャーに関する質問がありました。私はsetLayout()を使用して、レイアウトマネージャを単一のコンテナに配置しても何の問題もありません。例:JPanelのArrayListでsetLayoutメソッドを使用できないのはなぜですか?

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

これは問題なく動作します。

私がやりたいことは、ArrayList内のコンテナ用の特定のレイアウトマネージャを設定することです。 ループを使って各要素を循環させることなくこれを行う方法はありますか?

例:

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

(またはそのような何か、あなたがアイデアを得る、私は提供されたコードは明らかに誤りであることを承知している、私はまたのレイアウトマネージャを設定していることを承知しています単一のArrayList要素 "multipleContainers"の後に.get(num)を追加するだけです)TIA

+2

'ループを使って各要素を循環せずにこれを行う方法はありますか? ' - ループを使用すると何が問題になりますか?その2行のコード!!! – camickr

+0

@camickr Lol私はちょうどそれをやっている方法があるかどうかを知りたいと思っていました:) ...私はループを使用することに対して何も持っていません。 –

+2

それを行う方法があったとしても、まだループがあるでしょう。それはちょうどあなた自身のために書く必要がなかったループになります... –

答えて

2

大変申し訳ございません。あなたはそれを吸うために持っており、それはハードな方法は:)実はそれがfor-eachループとそれほど難しいことではありませんん。

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

それとも、あなたはすでに推測きたとして、昔ながらの方法があります:

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

私は、multipleContainersの型がJPanelの代わりにArrayListであることに気付きました。したがって、setLayout()はここでは機能しません。

setLayout()が機能するようにするには、パネルを取得するためにArrayListを反復処理する必要があります。

+0

私はこれを知っています、私はこれを上記で述べました。 –

関連する問題