スイングコンポーネント(例:JPanel)のすべてのインスタンスのデフォルトの背景ペイントをグラデーションの背景に変更する方法はありますか?それとも、JPanelの拡張機能を作成して、グラデーションで塗りつぶしてから、JPanelの代わりにアプリで使用する必要がありますか?スイングコンポーネントのデフォルトのグラデーションの背景
答えて
IMHOの場合、Swingコンポーネントをサブクラス化し、グラデーションペインティングを行うためのpaintComponent
メソッドをオーバーライドする方が簡単です。そして、あなたが言ったように、アプリケーション全体でこのカスタムコンポーネントを使用します。
すべてのLaFで一貫性がない可能性があるため、UIプロパティを使用するのは難しいことがあります。
私の最初の考えだった。もっと簡単な方法があれば分かりませんでした。特に複数のコンポーネントタイプにグラデーションを適用したい場合は、すべてのコンポーネントをサブクラス化する必要があります。 –
@JeffStorey、その場合は、 'JComponent'をサブクラス化する方が良いかもしれません。 – Moonbeam
複数のコンポーネントタイプにどのように役立つか分かりません。ボタンのバックグラウンドを変更していたとします。ここでJComponentのサブクラス化の仕方はどうですか? –
あなたが意図している範囲が完全にはっきりしていません。 クラス(つまり、すべてのJPanelインスタンスが新しいペイントスキームに従うようになっていますか?)またはすべてのコンテナ内のコンポーネント(フレーム内のすべて)を意味しますか?
これは、コンポーネントクラス、ルックアンドフィール、コンポーネントインスタンスベース、paintComponent()メソッド、またはコンポーネントが作成された後に独自のUIクラス(Component.setUIを参照)を提供することによって、そのメソッドを制御できないためにメソッドを上書きできない既存のコンポーネントの標準外観。
overwrite paintComponentアプローチを除いて実装するのは簡単ではありません。ほとんどのアプリケーションでは、単純なアプローチが最高です:)
- 1. スイングコンポーネントのデフォルトの背景色を取得する
- 2. グラデーションの背景UIScrollView
- 3. JPanelグラデーションの背景
- 4. 背景グラデーションの色と背景イメージDRYly
- 5. 背景のグラデーションの問題
- 6. グループボックスのグラデーションの背景
- 7. JToolBarのグラデーションの背景
- 8. CSSのグラデーションの背景ボタン
- 9. Flex SWFグラデーションの背景
- 10. グラデーション+背景画像
- 11. のAndroidのOpenGL-ESのグラデーションの背景
- 12. 背景の上にCSSのグラデーション
- 13. 画像のないグラデーションの背景
- 14. IE 8.グラデーションの背景+画像
- 15. グラデーションの背景を使ったスタイリングUITableViewCells
- 16. グラデーションの背景には、-webkit-勾配
- 17. 背景画像と線形グラデーション
- 18. Androidのスピナーの背景とデフォルトのテキスト
- 19. CSSの背景グラデーションの繰り返しの問題
- 20. デフォルトの通知の背景色
- 21. css3複数の背景 - グラデーションとイメージの略語
- 22. QPushButtonの背景に色とグラデーションの両方を適用する
- 23. jqueryでcolorpickerのグラデーションの背景色を設定しますか?
- 24. andengineのグラデーションの背景を適用する方法
- 25. グラデーションをテーブルビューのセルの背景に配置する
- 26. レイアウトビューの背景色をAndroidのグラデーションに設定しますか?
- 27. スタックパネルにグラデーションを適用する背景色/シルバーライトの画像
- 28. 背景の画像とグラデーションを持つAndroidセレクター
- 29. Opera 11.11、複数の背景、グラデーション、モダニズム問題
- 30. グラデーションの背景色と画像を同時に適用する
背景JPanelでこれを行い、他のすべてのJPanelを不透明にする必要はありませんか? –
@HovercraftFullOfEels、これも別のオプションです。しかし、それを他のコンポーネントにも拡張したい場合は、それらのコンポーネントを拡張する必要があると思います。 –
@JeffStorey:おそらく必ずしもそうではありません。不透明をfalseに設定する簡単なファクトリメソッドを使ってJPanelを作成することもできますし、GUI以外のすべてのJPanelを非不透明に設定することもできます。 –