[解決済み】Java Swingのrevalidate()とrepaint()の比較)
2022-04-07 02:40:57
質問
Swingアプリケーションを組んでいて、JPanelの中身をよく入れ替えたいと思うのですが、どうしたらいいでしょうか?これを行うには、私は
removeAll()
を呼び出し、新しいコンテンツを追加し、次に
revalidate()
.
しかし、古いコンテンツはまだ実際に表示されています(新しいコンテンツによって見えなくなっていますが)。もし私が
repaint()
に加えて
revalidate()
であれば、期待通りに動作します。
を呼び出すだけでは、他の機会にも経験したことがあると思います。
revalidate()
は十分です。
つまり、基本的に私の質問は、両方の関数を呼び出す必要があるのか、そうでない場合、それぞれをいつ呼び出すべきなのか、ということです。
どのように解決するのですか?
を呼び出す必要があります。
repaint()
と
revalidate()
. 前者は Swing にウィンドウの領域が汚れていることを知らせます (これは
removeAll()
後者はレイアウトマネージャにレイアウトの再計算を指示します(コンポーネントを追加するときに必要です)。これによって
子供たち
のパネルが再描画されますが、パネル自体は再描画されないかもしれません (
これ
は再描画のトリガーの一覧です)。
より一般的な話として、元のパネルを再利用するよりも、新しいパネルを構築して、親で入れ替えることをお勧めします。
関連
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] init-paramとcontext-param
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について