2

paint()を拡張する独自のクラス内のメソッドをオーバーライドしてみましたLabelFieldが、別の簡単な方法がある場合は無視します。

私のコード:

protected void paint(Graphics graphics) {
    int previousColor = graphics.getColor();
    graphics.setColor(0xFFFFFF);
    graphics.drawText(getText(), 2, -2);
    graphics.setColor(previousColor);
    super.paint(graphics);
}

私が達成したいのはこれです:

ここに画像の説明を入力

編集:誰もが興味を持っている場合に備えて、Abhisekによる回答は次の結果を生成します:

ここに画像の説明を入力

4

2 に答える 2

3

Abhishek の答えがうまくいかない場合は、paintメソッドで直接試してみることができます。それは簡単です。bg カラーで 1 回ペイントしてから、fg カラーでその上に (数ピクセル下に、前のテキストを残して) もう一度ペイントするだけです。このようなもの:

    protected void paint(Graphics graphics) {
        graphics.setColor(0xFFFFFF);
        graphics.drawText(getText(), 2, 0);
        graphics.setColor(0x000000);
        graphics.drawText(getText(), 0, 2);
    }

高さと幅に 2 ピクセル余分に必要であることに注意してください。おそらくgetPreferredWidthgetPreferredHeightおよび/またはをオーバーライドする必要がありますlayout

于 2012-12-14T12:26:21.463 に答える
0

暗闇の中での刺し傷ですが、 を使用してフォントを派生させ、パラメーターをFont.derive(style, height, units, aAntialiasMode, aEffects)渡し、問題のフィールドに適用してみてください。Font.DROP_SHADOW_RIGHT_EFFECTaEffects

動作するかどうか教えてください。非公開なので使っていません!

于 2012-12-14T12:08:25.947 に答える