Первая программа на LWUIT для Java ME

Цикл статей «Учебник Java ME и LWUIT»

Lightweight UI Toolkit — это легкая библиотека виджетов, вдохновленная из Swing, но спроектирована специально для девайсов, таких, как мобильные телефоны и телеприставки. Lightweight UI Toolkit поддерживает подключаемые, тематизированные иерархии компонентов, контейнеров и абстракции, лежащие в основе GUI. Термин «lightweight»(легкий) указывает на то, что виджеты в библиотеке прорисовываются в Java — исходнике, без нативного рендеринга. Внутренние интерфейсы и абстрактные классы предоставляют абстракцию интерфейсов и API, лежащие в основе профиля конфигурации. Это дает возможность портировать и мигрировать для обеих текущих и будущих профилей устройств. К примеру. Ниже, на рисунке представлена сокращенная иерархия абстракции классов LWUIT

lwuit-classes-simple-sample-ierarh

Библиотека Lightweight UI Toolkit очень строгая и не содержит в себе абстракцию системных сервисов, таких как сеть и память. LWUIT, также, не содержит реализацию нативных графических классов, посредством чего, нельзя и решать проблемы, связанные с UI кардинальными какими-то способами.

Ниже представлена первая программа, которая написана на чистом LWUIT

 

package lwuithello;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Label;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import javax.microedition.midlet.MIDletStateChangeException;
public class Midlet extends javax.microedition.midlet.MIDlet {
    public void startApp() {
        //Выполняется при старте
        Display.init(this);//Инициализируем дисплей
        //Включаем к программе файл ресурсов
        try {
               Resources r = Resources.open("/res/myresource.res");
               UIManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
        } catch (java.io.IOException e) {}
        //Настройка и показ формы
        Form f = new Form();
        f.setTitle("Hello World");
        f.setLayout(new BorderLayout());
        f.addComponent(BorderLayout.CENTER, new Label("I am a Label"));
        f.show();
     }
    public void pauseApp() {
        //Выполняется в режиме паузы
    }
    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
        //Выполняется при выходе
    }
}