2013-04-28 2 views
1

Как сделать ежевику BitmapField без фокусировки во время выполнения? Я хочу, чтобы он был затемнен на основе определенного события.Как сделать BlackBim BitmapField несовместимым во время выполнения

+0

Вы можете увидеть [мое решение этого похожего вопроса здесь] (http://stackoverflow.com/a/11488638/119114). Код, который я показываю **, будет ** уменьшать поле, когда оно отключено. Мой пример для класса [BitmapButtonField] (https://github.com/blackberry/Samples-for-Java/blob/master/Advanced%20UI/src/com/samples/toolkit/ui/component/BitmapButtonField.java) , но он должен работать одинаково для обычного «BitmapField». – Nate

ответ

1

Продлить BitmapField переопределить isFocusable() метод, как это:

public class FocusableBitmapField extends BitmapField { 
    //Default value depending on whether you want it that way. 
    private boolean focusable = true; 

    public boolean isFocusable() { 
     return focusable; 
    } 

    public boolean setFocusable(boolean focusable) { 
     this.focusable = focusable; 
    } 
} 
1

Большинство раз это работает:

field.setEditable(false); 

Вы также можете создать не-фокусируемое поле, передавая флаг стиля Field.NON_FOCUSABLE или Field.FOCUSABLE конструктору, но после создания экземпляра вы не сможете изменить его состояние. Даже если бы вы могли, то поле не будет выглядеть «затемненным» или «отключено», но просто фокус перейдет к следующему фокусируемому полю после него. Примером этого являются неактивные поля меток.

ОБНОВЛЕНИЕ: Это будет работать для встроенных полей, таких как EditFields, Checkbox, RadioButtons и т. Д. В вашем случае это не работает, поскольку BitmapField не является «редактируемым», это поле только для чтения. Вы можете сделать трюк, как @adwiv ответ показывает, но "отключено" или серый наложения вам придется реализовать его самостоятельно.

+0

+1. В [этом подобном вопросе] (http://stackoverflow.com/a/11488638/119114) я показываю, как вы можете просто проверить, доступно ли редактируемое/настраиваемое поле в переопределенном методе 'paint()', и отрегулируйте поле alpha to * dim * it. – Nate