6

J2ME でJava Personal Basis Profileに対してコードを書いています。AttributedStringの幅をピクセル単位で測定する必要があります。

Java SE では、AttributedStringから AttributedCharacterIterator を取得し、それをFontMetrics #getStringBounds に渡しますが、J2ME PBP では、FontMetrics にはメソッドがなくgetStringBounds、CharacterIterator を受け入れるその他のメソッドもありません。

私は何をしますか?

4

2 に答える 2

3

これには本当に苦労しました。パネルのサイズを AttributedString の幅に変更する必要がありました。私の解決策は次のとおりです。

double GetWidthOfAttributedString(Graphics2D graphics2D, AttributedString attributedString) {
    AttributedCharacterIterator characterIterator = attributedString.getIterator();
    FontRenderContext fontRenderContext = graphics2D.getFontRenderContext();
    LineBreakMeasurer lbm = new LineBreakMeasurer(characterIterator, fontRenderContext);
    TextLayout textLayout = lbm.nextLayout(Integer.MAX_VALUE);
    return textLayout.getBounds().getWidth();
}

LineBreakMeasurerを使用して文字列の TextLayout を検索し、TextLayout の値を単純にチェックします。(折り返し幅は Integer.MAX_VALUE に設定されているため、それより広いテキストは切り取られます)。

于 2014-01-25T23:07:22.183 に答える
-1

テキストの幅をピクセル単位で確認できます

String text = "Hello world";
int widthOfText = fontObject.charsWidth(text.toCharArray(), 0, text.length());

これで、変数widthOfTextにテキストの幅がピクセル単位で表示されます。

于 2012-08-08T06:54:20.007 に答える