Метка / Имя для поля кнопки Bitmap - PullRequest
0 голосов
/ 12 марта 2012

В настоящее время у меня есть 4 кнопки растрового изображения в моем приложении. Я хочу иметь что-то вроде метки / имени для каждой из кнопок, чтобы, когда кто-то фокусировался на конкретной кнопке, имя появлялось где-то на экране. Это может быть сверху, под кнопками или где угодно.

Как я могу это сделать? Я попытался найти метки полей для растровых кнопок, но ничего полезного не нашел.

1 Ответ

3 голосов
/ 12 марта 2012

Вы можете поместить CustomLabelField ниже полей кнопки.Переопределите ваши ButtonFields onFocus(int direction) и onUnfocus() методы.Внутри них вызовите setLabel(String label) метод вашего CustomLabelField

class CustomLabelField extends Field {
    String label;
    public void setLabel(String label){
        this.label = label;
        invalidate();
    }
    protected void layout(int arg0, int arg1) {
        setExtent(Display.getWidth, getFont().getHeight());
    }

    protected void paint(Graphics graphics) {
        graphics.setColor(Color.Black);
        graphics.drawText(label, 0, 0);
    }
}

РЕДАКТИРОВАТЬ (после комментариев)

Вы можете использовать эту пользовательскую кнопку и добавить в нее свои дополнительные функции.Я не пробовал, если это работает, но должно работать.

import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.container.MainScreen;

public class CustomButtonField extends BitmapField{
    private String label = "";
    private MainScreen yourScreen;

    public CustomButtonField(String label, MainScreen yourScreen) {
        super();
        this.label = label;
        this.yourScreen = yourScreen;
    }

    protected void onFocus(int direction) {
        yourScreen.setTitle(label);
        super.onFocus(direction);
    }

    protected void onUnfocus() {
        yourScreen.setTitle("");
        super.onUnfocus();
    }
}
...