2009-08-19 4 views
1

Может ли кто-нибудь сказать мне, как перенести фокус на следующий компонент на экране?Как перенести фокус на следующий компонент в Blackberry?

У меня есть один вертикальный менеджер с вертикальным scroll. Этот вертикальный менеджер полей состоит из поля редактирования, содержащего приблизительно 100 строк данных. Ниже этого вертикального менеджера полей у меня есть одна кнопка. Если я хочу переместить фокус на эту кнопку, это означает, что я должен пройти через все эти 100 строк в этом поле редактирования.

Есть ли другой способ передать фокус на кнопку нажатием одной кнопки?

ответ

1

На основании Richard's answer и ваших комментариев, я думаю, что правильный способ установить t он сосредоточиться на кнопку отправки, когда клавиша нажата ESC в поле редактирования выглядит следующим образом:

public boolean keyChar(char key, int status, int time) 
{ 
    if (key==Characters.ESCAPE) 
    { 
    submit.setFocus(); 
    } 

    return super.keyChar(key, status, time); 
} 

Примечание: Использование ключа ESCAPE не может быть лучшим вариантом. Возможно, вам захочется проверить, нажата ли клавиша-модификатор (например, Alt), проверив аргумент status и задав в этом случае фокус. При использовании этого кода рекомендуется использовать распознавание.

+0

Hey paracyle thanks yar ... он работает спасибо за помощь ур – Kumar

+0

ESCAPE может быть не лучшим выбором, так как он также используется для закрытия экранов. Возможно, используя статус, также можно выбрать статус Alt. Если в качестве кода вводится кнопка для отправки данных, есть два решения, которые приведут к тому, что пользовательский интерфейс будет соответствовать стандартной семантике интерфейса Blackberry: 1) создать меню с опцией отправки 2) переопределить onSave для экрана, чтобы изменить диалог для отправки (вместо сохранения), Отменить, Отменить – Richard

+0

Да, я понимаю, что ESCAPE может и не быть лучшим выбором.Тем не менее, оригинальный плакат упоминал в комментарии, что он использовал ESCAPE для этой цели, и именно поэтому я написал это так. Я могу отредактировать сообщение, чтобы прояснить это. – paracycle

0

Вам нужно будет расширить один из контейнеров поля редактирования, нажав клавишу нажатия клавиш процесса, ища нажатие клавиши, которую вы выберете (она должна быть не полезна для поля редактирования). Когда получен вызов, вызовите метод setFocus() на кнопке.

+1

Привет, Ричард, спасибо за идею ура, но я уже пробовал эту идею. Но когда я реализую эту идею, я могу переключиться на кнопку напрямую, но если я хочу редактировать что-либо в этом поле редактирования, то я не смог бы этого сделать. Здесь я набрал код, который я использовал, чтобы использовать swith to button, нажав клавишу «ESC». общественного логический keyChar (символ ключ, состояние INT, INT время) { если (ключ == Characters.ESCAPE) { submit.setFocus(); } return true; } – Kumar

0

Вы можете сделать поле со 100 строками текста, не сфокусированным. Когда он не фокусируется, и вы прокручиваете его, курсор должен пропустить 100 строк и перейти прямо к кнопке внизу.

0

Есть варианты:

  • использование navigationMove (если ах> некоторое значение), если поле редактирования не в режиме редактирования
  • Использование меню вместо кнопок
  • использования горячих клавиш
  • использование поискового вызова в списке поэтому не будет прокрутки