Mosync: Почему этот экран не отображается? - PullRequest
1 голос
/ 10 марта 2011

Я углубляюсь в макеты и пытаюсь понять, как они работают.Является ли макет чем-то вроде JPanel в Java Swing?То есть, где мы объявляем главную панель и добавляем к ней все виджеты?

Одна вещь, которую я не понимаю, - когда мы создаем мобильное приложение, мы создаем Layout & a Listbox.Какая связь между этими двумя объектами?

  • Содержит ли объект макета список, затем мы добавляем все виджеты в список?
  • Или в списке есть определенный макет, затем мы добавляем виджеты в списокИ они выровнены в соответствии с макетом
  • Или мы добавляем все виджеты в макет, как в Java Swing?

PS: С моими экспериментами ниже, мои виджеты не отображаются?Это просто пустой черный экран.Почему это происходит?

#include <MAUtil/Moblet.h>
#include <MAUI/Layout.h>
#include <MAUI/ListBox.h>
#include <MAUI/Label.h>
#include <MAUI/EditBox.h>
#include <MAUI/Screen.h>
#include <MAUtil/Environment.h>
#include <madmath.h>
#include <conprint.h>


using namespace MAUtil;
using namespace MAUI;

class TemperatureScreen : public Screen  //, public PointerListener
{
    public:
        TemperatureScreen()
        {
            MAExtent screenDim = maGetScrSize();
            Layout* mainLayout  = new Layout( 0, 0, EXTENT_X(screenDim), EXTENT_Y(screenDim), NULL, 1, 3 );
            ListBox* mainListBox = new ListBox( 0, 0, 100, 200, mainLayout,
                                       ListBox::LBO_VERTICAL, ListBox::LBA_LINEAR,
                                       true );
            mainListBox -> setPaddingLeft( 10 );
            mainListBox -> setPaddingRight( 10 );
            mainListBox -> setPaddingTop( 10 );
            mainListBox -> setPaddingBottom( 10 );
            mainListBox -> setBackgroundColor( 900 );
            mainLayout  -> setBackgroundColor( 300 );

            Label *celLabel     = new Label( 10, 300, 50, 20, mainLayout );
            Label *fahLabel     = new Label( 10, 300, 50, 20, mainLayout );
            EditBox *celEdit    = new EditBox( 10, 300, 50, 20, mainLayout );
            EditBox *fahEdit    = new EditBox( 10, 300, 50, 20, mainLayout );
            Label *toCelsiusRb  = new Label( 10, 300, 50, 20, mainLayout );
            Label *toFahRb      = new Label( 10, 300, 50, 20, mainLayout );
            Label *convertLabel = new Label( 10, 300, 50, 20, mainLayout );
            Label *exitLabel    = new Label( 10, 300, 50, 20, mainLayout );

            celLabel     -> setCaption( "Celcius" );
            fahLabel     -> setCaption( "Fahrenheit" );
            convertLabel -> setCaption( "Convert" );
            exitLabel    -> setCaption( "Exit" );
            /*celLabel   -> addPointerListener( this );
            fahLabel     -> addPointerListener( this );
            convertLabel -> addPointerListener( this );
            exitLabel    -> addPointerListener( this );*/

            mainLayout -> add( celLabel );
            mainLayout -> add( fahLabel );
            mainLayout -> add( convertLabel );
            mainLayout -> add( exitLabel );
        }

};

class TemperatureMoblet : public Moblet
{
    public:
        TemperatureMoblet()
        {
            instance = new TemperatureScreen();
            instance -> show();
        }

        ~TemperatureMoblet()
        {
            delete instance;
        }

        void keyPressEvent(int keyCode, int nativeCode)
        {
            // todo: handle key presses
            printf( "Blah" );
        }

        void keyReleaseEvent(int keyCode, int nativeCode)
        {
            // todo: handle key releases
        }

    private:
        TemperatureScreen *instance;
};

extern "C" int MAMain()
{
    Moblet::run(new TemperatureMoblet());
    return 0;
};

1 Ответ

0 голосов
/ 23 сентября 2011

Попробуйте добавить maUpdateScreen () в событие таймера или в прослушиватель ключей, просто чтобы посмотреть, что происходит.

Если вам нужна дополнительная помощь, просто вернитесь ко мне.

Вы можетепопробуйте новую версию 2.6 mosync по адресу:

http://www.mosync.com/documentation/manualpages/whats-new-mosync-26-pyramid

/ Tony

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...