JavaにはImageクラスとIconクラスの両方があります。これらの実装は、ほとんどの場合、それらをマージするImageIconです。しかし、なぜイメージとアイコンのクラスは別々になっていますか?アイコンはイメージの一種ではありませんか?JavaにImageクラスとIconクラスの両方があるのはなぜですか?
答えて
類似点はありますが、IconとImageは全く異なるユースケースを持っています。アイコンの代わりにイメージを使用できますが、イメージの代わりにアイコンを使用することはできません。
アイコンには3つの方法しかありません。アイコンには公称サイズを問い合せ、Graphicsターゲットにペイントするように指示する以外はアイコンで行うことはできません。最初からアイコンを実装するのは簡単です。単一の目的があるからです。塗りつぶすことができるのという四角形の境界線を表現しています。一方、あまりにも多くのメソッド自体を公開するわけではありませんが、さらに複雑なAPIを公開するメソッドがあります。たとえば、をに描画する巨大なAPIを取得するgetGraphics()メソッドです。ゼロからイメージを実装することは、多くの機能を提供するため、簡単なことではありません。画像そのものはに塗ってにすることもできますが、に塗ってに塗ることもできます。
Iconをアイコンを表すための最も簡単なインターフェースと考えると、Imageは画像を操作するためのツールです。 Iconを表す簡単な作業のためにImageから来る荷物をすべて必要とする理由はありません。これにより、実際のイメージに基づいていないColorを選択するアイコン(例えば、Colorとその色で塗りつぶした独自のColorIconを作成する)を実装することが容易な、アイコン用のものを自由に使用できます。アイコンが実際に受け入れられているどこでも、完全な吹き飛ばされた画像が必要な場合、それは非常に複雑になります。
ImageIconが頻繁に使用されるのは、使い方が非常に簡単なため(アイコンの例で使用されています)、概念的にアイコン用の簡単なペイントプログラムで作成できるImageを使用することです。そして、ほとんどの場合、作成者が望むものを達成し、例えばシンボル/アイコンをボタンに表示します。
あなたのプログラムを広範囲のディスプレイ解像度に優雅に適応させたい場合は、スケーラブルなベクター画像を選択するのが良いでしょう。ディスプレイの解像度に基づいて動的に)。そして非常にシンプルなIcon APIのおかげで、アイコンとして塗りつぶすことができる何かがあなたのニーズに最も適した表現を選ぶことができます。
- 1. いくつかのコントロールにBackgroundImageとImageの両方のプロパティがあるのはなぜですか?
- 2. JavaでPropertiesクラスが必要なのはなぜですか?
- 3. Stringクラスにコピーコンストラクタがあるのはなぜですか?
- 4. Pythonには、Javaのjava.util.zip InflaterクラスとDeflaterクラスと互換性のあるzipクラスがありますか?
- 5. HttpClientHandlerにProxyとUseProxyの両方のプロパティがあるのはなぜですか?
- 6. いくつかのJavaコードでは、DeckクラスがCardクラスを拡張するのはなぜですか?
- 7. Javaに既に独自のDateFormatクラスがある場合、Androidには独自のDateFormatクラスがあるのはなぜですか?
- 8. CSS条件 - 要素に両方のクラスがある場合
- 9. 別のクラスから別のクラスにアクセスする(両方とも同じパッケージ内にある)
- 10. Javaのクラスが自動的にロードされるのはなぜですか?
- 11. なぜPythonで日付クラスがあるのですか?
- 12. Javaでクラスが静的であると宣言されているのはなぜですか?
- 13. javaにストリームからStringとbyte []の両方を読み取ることができるクラスがない理由はありますか?
- 14. java.sql.Statementが抽象クラスではなく、インタフェースであるのはなぜですか?
- 15. System.Net.Http.HttpMethodが列挙型ではなく、クラスであるのはなぜですか?
- 16. JavaにはObjectクラスがあります。 Javascriptにはどのようなクラスがありますか?
- 17. 両方のコンテキストにBeanがあるようにJava-configクラスをXML-configにインポートするには?
- 18. なぜnetstandardとnetstandardapp TFMの両方がありますか?
- 19. Javaクラスがデータベースに書き込まないのはなぜですか?
- 20. クラスCanvasPaneがJava APIに含まれていないのはなぜですか?
- 21. あるクラスの変数をJavaの別のクラスで使用する方法は?
- 22. は、それは私がこのクラスとクラスの使用のようなJavaクラスにJSONに変換するJavaクラスオブジェクトにJSONに変換するクラスが
- 23. クラス名に数字があるスタックトレース - なぜですか?
- 24. このクラスに2つのコンストラクタがあるのはなぜですか?
- 25. java内の同じクラスの異なるモジュール間でクラスにパラメータを渡す方法はありますか?
- 26. なぜJavaでBaseクラスを使用するのですか
- 27. Scalaコンパニオンオブジェクトが2つのクラス(Javaと.NETの両方のコンパイラ)にコンパイルされるのはなぜですか?コードの
- 28. Javaでは、2つのクラスをマージして、両方のクラスのメソッドを1つから呼び出せるようにすることは可能ですか?
- 29. なぜクラスがlaravelエイリアスにある場合でもクラスを使用する必要がありますか?
- 30. 基底クラスと派生クラスの両方の基底クラスのデコレータの使用