Получение команд в формах
Впервые решил использовать формы в Java, точнее TextBox. И у меня ни в какую не получается отловить нажатие команд. Смотрите. Я добавляю две команды com1 и com2. Они появляются под софтовыми клавишами. Отлавливаю в commandAction нажатую команду, сохраняю её в переменной. А после ТекстБокса делаю цикл:
while(com==null) Thread.sleep(80); , где com - это переменная из commandAction. И цикл никогда не прерывается. Я, видимо, как-то жёстко не так делаю. |
Ответ: Получение команд в формах
Не надо ничего сохранять в переменной. Просто в commandAction создаешь такие конструкции:
Цитата:
|
Ответ: Получение команд в формах
Мля. Видел я такой пример. Не катит. Мне не нужно обрабатывать внутри commandAction. Хотя... Есть идея... Но это несколько криво будет...
|
Ответ: Получение команд в формах
Посмотри, как это в MP реализовано, там же можно обрабатывать комманды за пределами commandAction.
|
Ответ: Получение команд в формах
Я посмотрел. Там что-то очень странное и невнятное. И как я понял он там только одну команду обрабатывает. А если две? Или более? Ужос.
|
Ответ: Получение команд в формах
Блин. Как только уже не пробовал. По всем показателям commandAction просто напросто не вызывается вообще! ТекстБокс вызывается, команды вырисовываются (две кнопки "Далее" и "Назад"), но при нажатии на них ничего не происходит. Версия, что мидлет зависает по какой-то причие после нажатия на командную кнопку, не имеет места, так как если убираю цикл ожидания нажатия, то программа выполняется дальше, просто ТекстБокс появляется и мгновенно исчезает. Памагите :'(
|
Ответ: Получение команд в формах
Что-то мне сдаётся, что не работает setCommandListener. Он вообще для чего? Я просто по аналогии делал, всё вроде понятно, кроме этого метода. Но компилируется нормально.
|
Ответ: Получение команд в формах
setCommandListener как раз и заставляет систему сделать активным обработчик commandAction указанного объекта.
|
Ответ: Получение команд в формах
ViNT, вот! Я так и подумал! Видимо проблема в нём. commandAction не вызывается вообще. Может я setCommandListener как-то не так вызываю? Я ему передаю в качестве параметра экземпляр класса implements CommandListener. Блин. Я уже сутки не могу заставить обрабатываться команды.
- - - Во всех примерах, что я видел, implements CommandListener делают главный класс мидлета. Это имеет значение? У меня отдельный класс для этого использован. |
Ответ: Получение команд в формах
Собственно, нужно указывать используемый в данный момент объект - отображаемую форму, Canvas и т.д.
|
Ответ: Получение команд в формах
Не, я имею ввиду в скобочках круглых.
Я пишу так: PHP код:
tb - это ТекстБокс f - это я не знаю как назвать правильно. Короче класс имеет вид: PHP код:
|
Ответ: Получение команд в формах
Код:
TextBox tx = new TextBox("", "", 10, 0); Код:
public void commandAction(Coomand c, Displayable d){ |
Ответ: Получение команд в формах
Так. Напишу-ка я собственно всё:
PHP код:
Из класса, в котором выполняется основная часть программы будет вызываться метод functions.textbox(), который должен вывести на экран ТекстБокс, ожидать пока пользователь введёт в него что-нибудь, потом нажмёт одну из двух командных клавиш: "Ok" и "Назад". При нажатии "Ok" метод должен возвратить текст, набранный в ТекстБоксе, при нажатии "Назад" метод должен возвратить null. Кроме того ТекстБокс должен переключиться обратно в канвас. Вот. Возможно криво объяснил, так как терминалогия Java у меня до сих пор подхрамывает. |
Ответ: Получение команд в формах
Сделал implements CommandListener главный класс мидлета и всё заработало... Идиотизм какой-то... Где связь?
|
Ответ: Получение команд в формах
Код:
c.repaint(); скажите зачем системе в цикле проверять com==1? если при нажатии "ОК" мы просто начнем выполнять код? Не идите на поводу методики МР, она во многом ущербна из-за желания автора упростить язык. Код:
public class Main extends MIDlet implements CommandListener{ |
Часовой пояс GMT +4, время: 22:16. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot