swingコンポーネントのnameプロパティの使用目的は何ですか?それは内部的にスイングされていますか?スイングコンポーネントの名前プロパティは何ですか?
背景:同僚は、テキスト文字列のキーをnameプロパティに格納することで、国際化メカニズムを実装しました。次に、彼はすべてのスイング要素を辿り、コンポーネントのnameプロパティに格納されたキーを取得します。彼は、名前のプロパティは別の方法で使用されていないようだと主張し、これが最も簡単な方法でした。
swingコンポーネントのnameプロパティの使用目的は何ですか?それは内部的にスイングされていますか?スイングコンポーネントの名前プロパティは何ですか?
背景:同僚は、テキスト文字列のキーをnameプロパティに格納することで、国際化メカニズムを実装しました。次に、彼はすべてのスイング要素を辿り、コンポーネントのnameプロパティに格納されたキーを取得します。彼は、名前のプロパティは別の方法で使用されていないようだと主張し、これが最も簡単な方法でした。
内部でスイングされていますか?
短い答え:はい。
長い答え:簡単に確認できます。単純にuiを構築してツリーを歩いてください。またはf.iを見てください。ツリーノードに示すスイング(括弧)によって設定されるようにJXTreeデモタスクのSwingLabs-Demo(抵抗することはできません:-)、
を、JXTreeTableデモタスクをクリックしてのtreeTableのスクロールバーの上にマウスを移動し、スクロールバーボタンの名前を参照してください。そのスイングを行いますアプリケーションの理由から内部設定が名前を設定するのを妨げていますか?
短い答え:
おそらく、伝えるのは難しいではない長い答え:私が見てきた内部設定は、それらが深くコンテナ階層に隠されているように、アプリケーションのニーズに上書きされそうにありません。実際、f.iのようないくつかのフレームワークがあります。 SAFはリソース注入のために名前を使用します(あなたの同僚がやっていることと同じように)。自分の(維持されていない)FormBuilderフレームワークは、レイアウト制約のためにしました。曖昧(読み:未定義):
javadocのコンポーネントの名前 "コンポーネントの名前を設定または取得します。これは、テキストを表示しないコンポーネントにテキストを関連付ける必要がある場合に便利です。"だから、名前を使うのはいいと思う。
コンポーネントのプロパティに何かを配置することもできます。
+1はクライアントのプロパティです。 – trashgod
私の経験では、Swingコンポーネントの名前を設定するときに問題が発生したことはありません。 「リーフ」スウィングコンポーネント(JLabel
,JButton
,JMenu
...など)は、name
です。スウィングでは常にnull
となります。
「複雑な」Swingコンポーネントの内部コンポーネント(例:JColorChooser
)に名前が割り当てられている可能性がありますが、これらの内部コンポーネントに直接アクセスすることはできません(copmponent階層ツリーを通る以外)。
リソースインジェクション(i18n)によく使用されますが、ほとんどのロボット(FEST Swingなど)はUIイントロダクション(テストやデモ用)にも非常に役立ちますコンポーネントに名前を付けることができます。ただし、コンポーネントに固有の名前を割り当てる必要があります。
お返事ありがとうございました!私はそれをちょうどこのようにしておきたいと思います。他のコードの干渉のリスクがそれほど大きくないという小さなアプリケーションです。 – mort