4

アプリケーションに Synth を使用してカスタム ルック アンド フィールを実装しています。基本的には、SynthStyle、SynthPainter、SynthStyleFactory のカスタム バージョンを提供しています。

私はXML を使用していません。つまり、すべて Java API を介して行われます。一般的に、これはうまく機能しています。

ただし、適切なインセットを設定する最良の方法は、少しトリッキーです。さまざまなオプションが表示されます。

  • SynthStyle の getInsets をオーバーライドして、各リージョンの特定のインセットを返す
  • SynthStyle.installDefaults を使用してコンポーネントに境界線を適用する
  • すべてのインセットを (0,0,0,0) に設定し、ペイント メソッドで補正します
  • 新しい ComponentUI デリゲートを作成する

最善のアプローチは何ですか?またその理由は何ですか?

4

1 に答える 1

1

これについてはもう決定しましたか?物事についての私の意見は次のとおりです...

getInsets()コンテキストの数が少ない単純なスタイルの場合、オーバーライドは優れたソリューションのように見えます。GUI 全体でインセットの一貫性を保つのに役立ち、必要な変更点は 1 つだけです。

コンポーネントに空の境界線を適用することは、この目的のために少しハックに思えます。コンポーネントにカスタム境界線を適用する必要がある場合、setBorder()メソッドをオーバーライドして複合境界線を使用しない限り、空の境界線を誤って削除してしまう可能性があります。

すべてのインセットを 0 に設定する必要はありません。それらは既に 0 から始まっているからです。ペイント メソッドを書き直すことを考えると、非常に怖いでしょう。これは通常、コンポーネントに最後の仕上げを追加するために行われ、境界全体を再定義するためではありません。

ComponentUI新しいものを作成することがどのように役立つかは完全にはわかりません。これは主にサイズ変更とペイント (上記のように) に関係するためです。

アプリケーションにグローバルな影響を与えるため、最初にオプション1を試してから、それに入れたい例外とコンテキストを検討し始めます。

于 2011-02-22T16:50:15.840 に答える