Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Canvas и Form, переключение между ними 
:(
    Опции темы
prog2
Дата 21.5.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.1.2008

Репутация: нет
Всего: нет



Как переключать дисплеи с канваса на форму и обратно. Пока получается только с канваса на форму, а как затем обратно вернуть тот канвас, что был до этого? 


PM MAIL   Вверх
hamsterKSU
Дата 22.5.2008, 00:53 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



его надо запомнить где-то smile  например в поле Form backScreen в твоем классе реализующем Canvas
PM MAIL ICQ   Вверх
Semplar
Дата 10.6.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.6.2008

Репутация: нет
Всего: нет



Можно как угодно, всё зависит от реализации.
Значит, если тебе нужна автоматически переключаемая форма, то надо создать новый класс с теми самими свойствами, что и у класса Form (надо создать дочерний класс) с дополнительными параметрами.
Код

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

// мидлет
public class Midlet extends MIDlet impements Runnable
{
    Form form;
    Canvas canvas;

    public void startApp()
    {
        // создаем самопереключающеюся форму
        form = new AutoForm("MyForm", Display.getDisplay(this), canvas);
        // самопереключающийся канвас
        canvas = new AutoCanvas(form);
        Display.getDisplay(this).setCurrent(form);
    }

    public void pauseApp()
    {
    }

    public void destroyApp(boolean unconditional)
    {
        notifyDestroyed();
    }

    // чтобы вырубить мидлет
    public void run()
    {
        destroyApp(false);
    }
}

class AutoForm extends Form implements CommandListener
{
    Display display;
    Displayable displayable;

    public AutoForm(String title, Display d, Displayable disp)
    {
        super(title);
        /* запоминаем параметры,
          построение формы */
    }

    public void commandAction(Command command,  Displayable displayable)
    {
        // при определённом действии переключаемся на канвас
        /* условие... */ display.setCurrent(displayable);
    }
}

class AutoCanvas extends Canvas
{
    /* почти то же, но в обратную сторону
      и стосовно канваса */
}

Извините, просто долго писать подробности. Ну, думаю, в общих чертах понятно smile .
PM MAIL   Вверх
Dummy
Дата 10.6.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Можно и так, если захочетсяsmile  Только поправочка. Для конкретного случая вот здесь вот:

Код

form = new AutoForm("MyForm", Display.getDisplay(this), canvas);


canvas еще не инициализирован ничем реальным, т. е. он null. Так что для таких взаимных ссылок придется добавлять хотя бы в AutoForm что-то вроде setPreviousDisplayable() для выставления поля displayable и поправить код:
Код

// создаем самопереключающеюся форму
form = new AutoForm("MyForm", Display.getDisplay(this), canvas);
// самопереключающийся канвас
canvas = new AutoCanvas(form);
form.setDisplayable(canvas);
Display.getDisplay(this).setCurrent(form);


PM MAIL   Вверх
LeMoH
Дата 20.8.2008, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



всё, разобрался

Это сообщение отредактировал(а) LeMoH - 22.8.2008, 13:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.