TextField水平滚动

时间:2012-08-15 06:13:22

标签: blackberry horizontal-scrolling labelfield

您已通过此链接LabelField Marquee水平实施滚动文字。但我有一个问题,文本滚动相当好,但它已被覆盖在原始文本上被添加。任何人都知道如何应对这个问题?我还尝试按invalidate()刷新视图,但没有用。我已经添加了我面临的问题的屏幕截图。

任何帮助都会很明显。

谢谢。

enter image description here

2 个答案:

答案 0 :(得分:2)

我建议你将paint方法更改为next:

 public void paint(Graphics graphics) {
    currentText = this.getText();
    if (currentChar < currentText.length()) {
        currentText = currentText.substring(currentChar);

    }
    graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, 200);
}

因此,请勿在{{1​​}}中致电super.paint()

答案 1 :(得分:1)

我已经(以更简单的方式)重写了您链接的答案。它工作正常。

import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.DrawStyle;
import java.util.Timer;
import java.util.TimerTask;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;

public class MyScreen extends MainScreen {

    public MyScreen() {

        super();

        MarqueeLabel testLabel2 = new MarqueeLabel("This is a long long " +
                "long long long long long long long long long long long " +
                "long long marquee", Field.FOCUSABLE);
        add(testLabel2);

    }

    class MarqueeLabel extends LabelField {

        // Here MarqueeLabel code from your SO linked example

    }

}