複数のコンポーネントを追加したにもかかわらず、JFrame に 1 つのコンポーネントしか表示されないのはなぜですか?

Barbara Streisand
リリース: 2024-11-07 03:35:03
オリジナル
676 人が閲覧しました

Why is only one component showing up in my JFrame despite adding multiple components?

JFrame にコンポーネントが 1 つだけ表示される

この質問は、GUI の最上位コンポーネントのみが表示されるという問題に遭遇したユーザーから生じたものです。プログラムの実行時に表示されます。ユーザーのコードはフレーム内に複数のパネルとテキスト フィールドを表示しようとしますが、最初に表示されるコンポーネントは 1 つだけです。この矛盾により、他の要素が隠されているのではないかと考えられます。

解決策

コードを調査した結果、問題は次の BorderLayout にあることが明らかになります。 JFrame のコンテンツ ペイン。 BorderLayout では、すべてのコンポーネントが最初に配置された中心位置に 1 つのコンポーネントしか占有することができません。

これを解決するには、ユーザーは BorderLayout に追加するときに各コンポーネントに特定の制約を割り当てる必要があります。次のコード スニペットは、このアプローチを示しています。

f.add(top, BorderLayout.PAGE_START);
f.add(mid);
f.add(bot, BorderLayout.PAGE_END);
ログイン後にコピー

このコードは、上部パネルをフレームの先頭に配置し、中央と下部のパネルは制約を受けないままにします。その結果、トップ パネルの下に垂直に表示されます。

その他の改善点

視認性の問題を解決することに加えて、ユーザーは改善したいという要望も表明しました。番組のパフォーマンス。追加の提案をいくつか示します。

  • f.setSize(500, 500); を削除します。そして、setVisible(true) の直前に Pack() を呼び出して、その内容に基づいてフレームのサイズを最適化します。
  • Change f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); により適切な終了戦略を実現します。
  • 個々のコンポーネントはトップレベルのコンテナに追加されるとデフォルトで表示されるため、setVisible(true) 呼び出しを省略します。
  • 不要なステートメント public を削除します。 class EncDecExample は JFrame を拡張し、public class EncDecExample に置き換えます。

これらの変更を実装すると、プログラムはすべてのコンポーネントを意図どおりに表示するだけでなく、より効率的に実行され、ユーザーが閉じるボタンを押すとシームレスに閉じます。

以上が複数のコンポーネントを追加したにもかかわらず、JFrame に 1 つのコンポーネントしか表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート