2016-04-22 10 views
1

クラスjavax.swing.JComponentjavax.awt.Containerの直接サブクラスであり、methods to add child componentsを提供します。これはJTableJTreeのようないくつかのコンポーネントには意味がありますが、例えばJLabelでは意味をなさないようです。単純な実験からわかる限り、JLabelの子は無視されます。なぜJComponentはContainerのサブクラスですか?

JComponentサブクラスもすべてContainerのサブクラスであるか、それとも過度のサブクラス化の時代の遺物ですか?

答えて

1

なぜJComponentはContainerのサブクラスですか?

任意のコンポーネントに子コンポーネントを追加できます。パネルにコンポーネントを追加した場合とは異なる動作になるかもしれませんが、実行できます。 JPanel以外のほとんどのコンポーネントでは、nullレイアウトが使用されます。

これは、JTableのか、JTreeのようないくつかのコンポーネント、理にかなっている間、

あなたがこれを言うのはなぜ。 JTableは単なるコンポーネントです。 JTableの通常の表示には、子コンポーネントはありません。セルを編集すると、エディタコンポーネントがテーブルに追加され、テーブルがコンポーネントのサイズ/場所を管理します。

たとえば、JLabelでは意味がないようです。私が簡単な実験から分かる限り、JLabelの子は無視されます。

レイアウトがnullなので、ラベルに追加するコンポーネントのサイズや場所を管理する必要があります。

また、JLabelのレイアウトマネージャを設定することもできます。実際のラベルのサイズには子は含まれませんが、レイアウトマネージャを使用してラベルに子を配置することができます。

関連する問題