複数行のラベルの実際の高さを取得するために使用する方法は次のとおりです。
public int getPreferredHeight() {
String text = getText();
int maxWidth = getManager().getPreferredWidth();
String[] words = StringUtilities.stringToWords(text);
int lastWordAdvance = 0;
int lines = 1;
for (int i = 0; i < words.length; i++) {
int wordAdvance = getFont().getAdvance(words[i]);
if (lastWordAdvance + wordAdvance < maxWidth ) {
lastWordAdvance += wordAdvance;
} else {
lines++;
lastWordAdvance = wordAdvance;
}
}
return (int)lines * getFont().getHeight();
}
単語を 1 つずつ調べて前払いを計算し、ラベルが実際にどれだけの行を使用しているかを調べます。次に、getFont().getHeight() を使用して全体の高さを決定します。
私の例から事前に計算する部分を使用して、ラベルの実際の幅を取得できます。これを行うには、 Math.max() メソッドを使用して最大線幅を決定します。