0

次のように LabelField を新規作成した場合:

LabelField label = new LabelField("long longgggg long text");

それが示している:

------------------------------------
| ロングロング |
| | 長いテキスト |
-----------------------

label.getWidth() を使用すると、次の幅が得られます。

| | ロングロング |

しかし、私が必要とするのは幅です:

| | ロングロング

解決策はありますか?

4

2 に答える 2

0

長さを取得するには getPreferedWidth() をチェックしてください。

必要以上のフォントを適用した場合

<font object>.getAdvance(label.getText()) 
于 2012-09-10T07:59:36.180 に答える
0

複数行のラベルの実際の高さを取得するために使用する方法は次のとおりです。

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() メソッドを使用して最大線幅を決定します。

于 2013-08-08T08:40:32.937 に答える