web-dev-qa-db-ja.com

JavaでJFrameからすべてのコンポーネントを削除する方法は?

私はJFrameを持っているプログラムを書いており、JFrameからすべてのコンポーネントを削除し、1つのコンポーネントだけを追加してフレームを再描画したいです。これまでのところ、以下のコードのようなものがあります(StartFrameがJPanelを実装するJFrameを実装するオブジェクトで呼び出されます)。

_removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
_

ただし、コードを実行すると、空のウィンドウ(startPanelではない)が表示され、ウィンドウを最小化/サイズ変更すると、ウィンドウが黒くなります。 removeAll()を省略し、JFrameにまだ要素がない場合、startPanelが正常に表示されます。実際にすべてを削除してから新しいパネルを表示する方法についてのアイデアはありますか?

27
scaevity

電話する必要があります

_ private JFrame frame = new JFrame();
 ...
 ...
 frame.getContentPane().removeAll();
 frame.repaint();
_

removeAll()は、必要に応じてcontentPaneに転送するadd()またはremove()としてオーバーライドされていません。

50
Kavka
getContentPane().removeAll();
getContentPane().repaint();
5
Md Salman Ahmed

フレームをクリアした後に何かを追加することが目標であると仮定すると、thosコンポーネントを追加して更新した後にvalidateを呼び出す必要があります

getContentPane().removeAll();
add(new component);
validate();
4
joe pelletier