私はJFrameを持っているプログラムを書いており、JFrameからすべてのコンポーネントを削除し、1つのコンポーネントだけを追加してフレームを再描画したいです。これまでのところ、以下のコードのようなものがあります(StartFrameがJPanelを実装するJFrameを実装するオブジェクトで呼び出されます)。
_removeAll();
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
_
ただし、コードを実行すると、空のウィンドウ(startPanelではない)が表示され、ウィンドウを最小化/サイズ変更すると、ウィンドウが黒くなります。 removeAll()
を省略し、JFrameにまだ要素がない場合、startPanelが正常に表示されます。実際にすべてを削除してから新しいパネルを表示する方法についてのアイデアはありますか?
電話する必要があります
_ private JFrame frame = new JFrame();
...
...
frame.getContentPane().removeAll();
frame.repaint();
_
removeAll()
は、必要に応じてcontentPane
に転送するadd()
またはremove()
としてオーバーライドされていません。
getContentPane().removeAll();
getContentPane().repaint();
フレームをクリアした後に何かを追加することが目標であると仮定すると、thosコンポーネントを追加して更新した後にvalidateを呼び出す必要があります
getContentPane().removeAll();
add(new component);
validate();