GridLayout(3x3)を使用して9個のJPanelを含むJFrameサブクラスを作成しました。私は、JFrame内のJPanelをランダムに並べ替えるメソッドを設計しようとしています。ここで私がこれまで持っているものです。JFrameのコンテンツペイン内でJPanelを並べ替える?
public void shuffle() {
Stack<Component> panels = new Stack<Component>();
for(Component c : this.getContentPane().getComponents())
panels.push(c);
this.getContentPane().removeAll();
Collections.shuffle(panels);
while(!panels.isEmpty())
this.getContentPane().add(panels.pop());
this.repaint();
}
このメソッドが実行された後、彼らが前にあったように、のJPanelはGridLayoutの中に正確に同じ位置にあります!私はJFrameが実際に再描画されていること、スタックがシャッフルされていること、そしてremoveAll()
とadd()
のメソッドが動作していることを確認しました。コンテンツペインはJPanelsの場所を記憶しているように見えるので、add()
コールの並べ替えは機能していないようです。
ここで私は間違いをしていますか?レイアウト内のJPanelsの位置をシャッフルする良い方法を知っている人はいますか?前もって感謝します!
!ありがとう! – AndreiM
あなたは歓迎しているが、それはまさに輝きではないのですが、むしろ経験...私は過去にこの2〜3時間で燃えてしまったので、決して忘れないでしょう:) –