Как поменять поле на фокус в ежевике - PullRequest
0 голосов
/ 21 июня 2011

Здравствуйте, сэр, я пытался сделать это, но дело в том, что я получаю данные в массиве, а не в отдельных данных ... Я хотел отобразить данные по одному, как только это сфокусировалось на этом .... вот код и результат ....

protected boolean navigationMovement(int dx, int dy, int status, int time) {
        for (int i = 0; i < CrDrLabels.length; i++) {


            Field field = CrDrLabels[i];

            System.out.println("hhhhhhhhhhhhhhhh::::" + CrDrLabels[i]);

            if (field.isFocus() == true) {


                // get object for next field in focus order

                field = (i == (getFieldCount() - 1)) ? CrDrLabels(0): CrDrLabels(i + 1);

                CrDrLabels[i].setFocus();

                //break;
            }
        }
        return false;

    }

    private Field CrDrLabels(int i) {
        // TODO Auto-generated method stub
        return null;
    }

результат ........

hhhhhhhhhhhhhhhh::::KV10
hhhhhhhhhhhhhhhh::::FV6
hhhhhhhhhhhhhhhh::::HV8
hhhhhhhhhhhhhhhh::::NV12
hhhhhhhhhhhhhhhh::::OV15
hhhhhhhhhhhhhhhh::::JV9
hhhhhhhhhhhhhhhh::::DV5
hhhhhhhhhhhhhhhh::::PV16
hhhhhhhhhhhhhhhh::::Vendor1
hhhhhhhhhhhhhhhh::::New Info Systems
hhhhhhhhhhhhhhhh::::MV14
hhhhhhhhhhhhhhhh::::PV4
hhhhhhhhhhhhhhhh::::Tv23
hhhhhhhhhhhhhhhh::::Vendor4
hhhhhhhhhhhhhhhh::::Vendor5
hhhhhhhhhhhhhhhh::::
hhhhhhhhhhhhhhhh::::

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

пожалуйста, пришлите мне код, как решить эту проблему ...

1 Ответ

1 голос
/ 21 июня 2011

Эта строка: field = (i == (getFieldCount() - 1)) ? CrDrLabels(0): CrDrLabels(i + 1) сбила меня с толку, потому что ваш CrDrLabels(int) метод просто возвращает null. Убедитесь, что вы не хотите использовать средство доступа к массиву ([]). Кроме того, если вы не переопределите метод toString() класса CrDrLabel, вы получите странный вывод при его System.out.println().

Проще всего было бы просто переопределить метод onFocus() ваших CrDrLabels для выполнения любых необходимых действий, когда они получают фокус.

Редактировать для комментария:

Я просто напишу это так, как если бы ваши CrDrLabels были LabelFields. Когда вы создаете их, сделайте это:

CrDrLabels[x] = new LabelField(theText) {
    protected void onFocus(int direction) {
        //do your work here 

        //and be sure to call super.onFocus()
        super.onFocus(direction);
    }
}
...