JPanel
でコンポーネントを動的に追加および削除しています。 機能の追加と削除は正常に機能しますが、コンポーネントを削除すると、削除するコンポーネントではなく最後のコンポーネントが削除されます。JPanelからコンポーネントを動的に削除
どうすればこの問題を解決できますか?
JPanel
でコンポーネントを動的に追加および削除しています。 機能の追加と削除は正常に機能しますが、コンポーネントを削除すると、削除するコンポーネントではなく最後のコンポーネントが削除されます。JPanelからコンポーネントを動的に削除
どうすればこの問題を解決できますか?
Container.remove(Component)
メソッドを使用すると、コンテナからコンポーネントを削除できます。たとえば:
JPanel j = new JPanel();
JButton btn1 = new JButton();
JButton btn2 = new JButton();
j.add(btn1);
j.add(btn2);
j.remove(btn1);
は、興味深いことに、私は同じ問題に出くわすていますし、彼ははっきり程度動的作成したコンポーネントではなく、すでに変数名の下に作成されたコンポーネントを求めているように私は、人々が他の答えをupvotingしている驚いています匿名で作成されたオブジェクトではなく、取得可能なオブジェクトです。
答えはかなりシンプルです。 getComponents()を使用して、JPanelに追加されたコンポーネントの配列を反復処理します。たとえば、instanceofを使用して、削除するコンポーネントの種類を探します。私の例では、JPanelに追加されたJCheckBoxを削除します。
Make sure to revalidate and repaint your panel, otherwise changes will not appear
コンポーネントは、私たちが助けることができるので、あなたのコードを投稿してくださいjava.awt.Component.
//Get the components in the panel
Component[] componentList = panelName.getComponents();
//Loop through the components
for(Component c : componentList){
//Find the components you want to remove
if(c instanceof JCheckBox){
//Remove it
clientPanel.remove(c);
}
}
//IMPORTANT
panelName.revalidate();
panelName.repaint();
からです。 –
[SSCCE](http://www.sscce.org) – mre
「public void remove(Component comp)」の代わりに「public void remove(int index)」メソッドを使用していますか?より良い答えが必要な場合は、SSCCEを投稿してください。 –