1

画面上のサイズ変更不可能なコンポーネントの適切なサイズを設定するために、いくつかの事前設定された寸法オブジェクトを使用することは禁忌ですか? 例: 2 つのテキストフィールドはどちらも 80x20 ピクセルにする必要があります。

Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);
4

1 に答える 1

4

はい、「安全」です。Java Performance Tuningからの引用:

[...]この同じ Dimension オブジェクトを複数のコンポーネントに再利用できます。[...]

あなたが望むものに依存します。Componentの実装は引数の内容をコピーするのではなく、参照を保存することに注意してください。

public void setPreferredSize(Dimension preferredSize) {
    ...
    this.prefSize = preferredSize;
    ...
}

したがって、変更すると、 と の両方にd格納されている寸法オブジェクトに影響します。tf1tf2

(私が言っているのは、以下のコードは期待どおりに動作しない可能性があるということです。)

Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);

d.width += 1;               // <-- will affect also tf1.
tf2.setPreferredSize(d);
于 2011-09-15T11:43:08.657 に答える