カスタムSwingコンポーネントの作成方法[終了]
-
03-07-2019 - |
質問
私は常にJavaでカスタムコンポーネントを作成したり、既存のコンポーネントをカスタマイズしたいと思っていましたが、検索しても何の有用性もありませんでした。そこで、StackOverflowコミュニティに質問することにしました:
一般的なJava GUIコンポーネントのカスタマイズに関する情報はどこで入手できますか?
そして、カスタマイズを意味するとき、私は色、フォントなどの変更について話しているのではありません。本当にそれらをカスタマイズすることを意味します。モックアップの2つのサンプルコンポーネントを次に示します。
注
この質問は、主に上記の2つのカスタムコンポーネントを作成する方法を見つけるために始めました。しかし、その後、Swingコンポーネントのハッキングに関する一般的な質問はないことに気付きました。そのため、リソースのリストを用意する方が良いと思いました。
モックアップの2つのコンポーネントがどのように機能するのか疑問に思っている場合は、ここにあります:
各方向に2つのスクロールバーを持つカスタマイズされたJScrollPane。各スクロールバーの動作は異なります。たとえば、外側のものは通常にスクロールし、内側のものはより Picasa のような方法でビューを移動します。私は実際にグーグルグループから実用的な(!)答えを得ましたこちらが、それは単なるコードでした。
2番目はカスタムJComboBoxで、ポップアップリストが展開されると、最後にJComponentがあります。これには、アイコン付きの単純なJLabelから、リストを何らかの方法で操作するJButtonまで、何でもかまいません。
しかし、この質問はそれらの特定のコンポーネントに関するものではありません。それは、リソース(ウェブサイト、書籍、記事など)を見つけて作成する方法を学ぶことです。
解決
この記事カスタムSwingコンポーネントの作成方法は非常に役立つはずです。離散ステップと連続範囲の両方を持つWindowsスライダーコントロールの複製について説明します。
他のヒント
JDKはオープンソースです。 Swingコンポーネントの記述方法を理解するには、Swingコンポーネントのソースを探すのに最適な場所はありません。一般に、カスタムコンポーネントを作成する場合、次の1つ以上に関心があります。{相互作用セマンティクス、視覚的表現、構成的構造}
最も単純なケースから始めます:
パッシブコンポーネント: JLabel
インタラクティブコンポーネント: JButton
JLabel
は、コンポーネントのカスタム描画のための JComponent
の最低限の拡張機能を示します。この場合、「text」文字列値をその表現として描画しています。
JButton
は、コンポーネントの描画に加えて、ユーザーとの対話のための最低限の拡張機能を示します。
Filthy Rich Clients は、このトピックに関する非常に読みやすい優れた本です。完全に新しいコンポーネントを作成するよりも、Swingコンポーネントのルックアンドフィールを改善することが重要ですが、Swingの本質を理解し、多くの実用的な例を提供します。
これはかなり未解決の質問です。短い単純な答えは、サブクラス JComponent
またはその子孫のいずれかで、必要な機能を追加します。明らかに、あなたが何をしたいのかによって、これは難易度が異なります。手始めに、Sunの Swingコンポーネントの使用に関するチュートリアルを読むことをお勧めします スクロールウィンドウ>の使用方法の例a>およびポップアップメニュー。それらを読み、実験したら、人々が考慮された答えを提供しやすくなるより具体的な質問があるかもしれません。
モックアップ内の2つのコンポーネントがすべて実装したい場合、それらをどのように機能させるかについてのより良いアイデアを提供することで、より良い答えが得られます。
スウィングハック:ヒント& Killer GUIを構築するためのツール(マリナッチ、アダムソン)。私見は、スイング全般を効果的に扱うために不可欠な本です。
個人的には、上記の答えはあまりにも一般的または曖昧だと思います。また、誰かが私と同じように必然的にこのスレッドにぶつかるので、見つけたものを提供することもできます。
これが役立つことを願っています...