画面上のサイズ変更不可能なコンポーネントの適切なサイズを設定するために、いくつかの事前設定された寸法オブジェクトを使用することは禁忌ですか? 例: 2 つのテキストフィールドはどちらも 80x20 ピクセルにする必要があります。
Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);
画面上のサイズ変更不可能なコンポーネントの適切なサイズを設定するために、いくつかの事前設定された寸法オブジェクトを使用することは禁忌ですか? 例: 2 つのテキストフィールドはどちらも 80x20 ピクセルにする必要があります。
Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);
はい、「安全」です。Java Performance Tuningからの引用:
[...]この同じ Dimension オブジェクトを複数のコンポーネントに再利用できます。[...]
あなたが望むものに依存します。Component
の実装は引数の内容をコピーするのではなく、参照を保存することに注意してください。
public void setPreferredSize(Dimension preferredSize) {
...
this.prefSize = preferredSize;
...
}
したがって、変更すると、 と の両方にd
格納されている寸法オブジェクトに影響します。tf1
tf2
(私が言っているのは、以下のコードは期待どおりに動作しない可能性があるということです。)
Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
d.width += 1; // <-- will affect also tf1.
tf2.setPreferredSize(d);