3

ここにある MultiLineLabel のコードのバグの原因を突き止めようとしています: http://samuelsjoberg.com/archive/2009/10/multiline-labels-in-swing

基本的に、そのサンプルは、たとえば Arial で問題なく動作します。しかし、ITCKorinna-Bold などのカスタム フォントを Mac にインストールすると、MultiLineLabel はレンダリングされますが、改行は追加されないため、「これは長い行です」ということになります。「これは…」になる

4

1 に答える 1

0

OpenJDK 7 update 19 を搭載した Linux では、問題なく動作します。コードを提供していないため、何か問題があるかどうかを確認するのは難しいです。

Roboto を使用するように例を変更すると、改行が期待どおりに機能します。

どの Java ランタイムを使用しているかはわかりませんが、Apple が提供するものを使用している場合は、FontMetrics オブジェクトによって返される値に違いがある可能性があります (Apple Java ランタイムは、Linux の OpenJDK などとは異なるフォント レンダリングを行うため) )。OpenJDK を試してみて、それが違いを生むかどうかを確認するか、別のプラットフォームでアプリを実行して、それが違いを生むかどうかを確認することをお勧めします。

    Font robotoFont = null;
    try {
        robotoFont = Font.createFont(Font.TRUETYPE_FONT, new File("/usr/share/fonts/roboto/Roboto-Black.ttf"));
        robotoFont = robotoFont.deriveFont(14f);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Using the MultiLineLabel class.
    final MultiLineLabel mLabel = new MultiLineLabel(
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
                    + "Phasellus non sapien quam. Fusce posuere, nisl "
                    + "vitae tristique volutpat, augue erat faucibus nisl, "
                    + "nec venenatis metus sem vel enim. Cras in libero "
                    + "sapien, vitae euismod neque. Proin hendrerit, odio "
                    + "et faucibus suscipit, eros tellus blandit justo, "
                    + "ac cursus risus elit ut risus.");
    mLabel.setForeground(Color.WHITE);
    mLabel.setFont(robotoFont);

ここに画像の説明を入力

于 2013-04-27T10:47:16.140 に答える