Цикл статей «Учебник Java ME и LWUIT»
Lightweight UI Toolkit — это легкая библиотека виджетов, вдохновленная из Swing, но спроектирована специально для девайсов, таких, как мобильные телефоны и телеприставки. Lightweight UI Toolkit поддерживает подключаемые, тематизированные иерархии компонентов, контейнеров и абстракции, лежащие в основе GUI. Термин «lightweight»(легкий) указывает на то, что виджеты в библиотеке прорисовываются в Java — исходнике, без нативного рендеринга. Внутренние интерфейсы и абстрактные классы предоставляют абстракцию интерфейсов и API, лежащие в основе профиля конфигурации. Это дает возможность портировать и мигрировать для обеих текущих и будущих профилей устройств. К примеру. Ниже, на рисунке представлена сокращенная иерархия абстракции классов LWUIT
Библиотека 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 { //Выполняется при выходе } }