質問: パネルを切替ると、リサイズするまで一部が非表示に java初心者です。タイトルが意味不明でしたら申し訳ありません。 住所録の登録・削除等を操作するアプレットを作成しています。 パネルの内容を変更し、再表示しようとしたところ、アプレット画面をリサイズしなければ一部が表示されないという現象が起きて困っています。 モード(登録・削除・変更等)別にパネルを作成し、アプレット全体を覆うようにして表示しています。 例えば deletepanel...削除対象検索時→ラベル・操作用パネル(テキストエリア・ボタン) ...削除内容確認時→ラベル・操作用パネル(テキストフィールド・ボタン) というようにです。 上記のラベルはsettextで表示文章のみを変え、操作用パネルはひとつのパネルをモード・機能別に内容だけ変更して使用しています。 そこで、削除対象検索時から削除内容確認時へとdeletepanelの内容を変更するために、一旦deletepanel.removeall()し、 再びinit()で別機能用のdeletepanelに再編集しadd(deletepanel)をするのですが、 どういうわけか操作用パネルがアプレットビューアをリサイズするまで表示してくれません。 しかも、なぜかラベルはきちんと表示してくれます。 操作用パネルには、さらに細かなパネル・ボタンなどをaddしているので、それが原因なんでしょうか・・・。 現在は、切替えてaddした直後に、resize(width,height)を実行して、アプレットをリサイズして無理やり表示させている状態なのですが、気に食わないです。 cardlayoutを使えば簡単にできるようですが、少々理由があり、敢えて使用していません。 よろしくお願いします。
回答: container(この場合はあなたのapplet)にあとからcomponentをadd/removeしたときは、そのcontainerをconとすると: con.invalidate(); con.validate(); により、再レイアウトを強制します。 containerがswingのjcomponentだったら、 con.revalidate(); だけでokです。 参考url:http://homepage1.nifty.com/algafield/javaguifaq19j.html