Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 12

Автор Майкл ΠœΠΎΡ€Ρ€ΠΈΡΠΎΠ½

Π₯отя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих шагов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструмСнты J2ME Wireless Toolkit, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ просто ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ прилоТСния Π² срСдС Sun KToolbar.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ³Ρ€Ρ‹ Skeleton

Π― Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΎ создании Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠ·-Π·Π° большой слоТности это Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСн ΠΈ написан ΠΌΠΈΠ΄Π»Π΅Ρ‚. Для Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΌΠΈΠ΄Π»Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Skeleton. Π­Ρ‚ΠΎΡ‚ ΠΌΠΈΠ΄Π»Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ мобильном Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта информация содСрТит ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° (Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ экрана ΠΈ Π³Π»ΡƒΠ±ΠΈΠ½Π° Ρ†Π²Π΅Ρ‚Π°), ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройствах.

ΠŸΡ€ΠΈ построСнии ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton Π²Ρ‹ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шагов, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π­Ρ‚ΠΎΡ‚ процСсс практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ для построСния Π»ΡŽΠ±Ρ‹Ρ… ΠΌΠΈΠ΄Π»Π΅Ρ‚ΠΎΠ². НиТС пСрСчислСны этапы построСния ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton:

1. Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°;

2. ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°;

3. ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрификация ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°;

4. ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°;

5. Ρ‚СстированиС ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°.

Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этапов, Π° ΠΊΡƒΠ»ΡŒΠΌΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ полная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ J2ME-ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°.

НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ создадитС ΠΊΠΎΠ΄ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ создаваСмого ΠΊΠΎΠ΄Π° – это ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² J2ME. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π° ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠ΅ имя (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, javax.microedition.midlet.MIDlet), Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΠ»ΠΎΡ…ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ строки ΠΊΠΎΠ΄Π° вашСго ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π²Π° Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

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

...

Π‘ΠΎΠ²Π΅Ρ‚ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ

МногиС Java-программисты Π½Π΅ ΠΎΠ΄ΠΎΠ±Ρ€ΡΡŽΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с использованиСм Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠ³ΠΎ символа * (Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом Π½Π΅ содСрТится информация ΠΎΠ± особых классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅. Однако это ΠΎΡ‡Π΅Π½ΡŒ простой ΠΈ быстрый способ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС классы ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° для Ρ†Π΅Π»Π΅ΠΉ этой ΠΊΠ½ΠΈΠ³ΠΈ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ самый простой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ понятным. НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΏΡ€ΠΈ написании собствСнного ΠΊΠΎΠ΄Π°, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ясным.

ΠŸΠ°ΠΊΠ΅Ρ‚ javax.microedition.midlet Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ класса MIDlet, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚ javax.microedition.lcdui Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ классам ΠΈ интСрфСйсам GUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания GUI-ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, класс Display. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π² эти Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс SkeletonMIDlet, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ MIDlet:

public class SkeletonMIDlet extends MIDlet implements CommandListener }

НС ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ класс SkeletonMIDlet Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ MIDlet, Π½ΠΎ Π²ΠΎΡ‚ рСализация интСрфСйса CommandListener ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вСсьма странной. Π­Ρ‚ΠΎΡ‚ интСрфСйс Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для создания ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Exit, которая позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Ρ‚ΠΎ интСрфСйс CommandListener Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ΄Π»Π΅Ρ‚ ΠΌΠΎΠ³ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ события. ЕдинствСнная пСрСмСнная, Ρ‡Π»Π΅Π½ класса SkeletonMIDlet, β€“ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ SCanvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Π³Π»Π°Π²Π½Ρ‹ΠΉ экран:

private SCanvas canvas;

Класс SCanvas – это особый класс ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ класса Canvas. Π₯олст инициализируСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ startApp():

public void startApp() {

if (canvas == null) {

canvas = new SCanvas(Display.getDisplay(this));

Command exitCommand = new Command("Exit", Command.EXIT, 0); //Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ EXIT ΠΈ добавляСм Π΅Π΅ Π²

canvas.addCommand(exitCommand); //класс Canvas. Π’Π΅ΠΏΠ΅Ρ€ΡŒ canvas смоТСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

canvas.setCommandListener(this);

}

// Start up the canvas

canvas.start();

}

ΠœΠ΅Ρ‚ΠΎΠ΄ startApp() вызываСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Π² состояниС Active, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом являСтся созданиС холста. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Display ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° создаСтся ΠΈ пСрСдаСтся ΠΏΡ€ΠΈ создании холста. Команда Exit создаСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ конструктору Ρ‚Ρ€Π΅Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: названия ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π΅Π΅ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ опрСдСляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ появляСтся ΠΊΠ°ΠΊ экранная ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π° дисплСС устройства Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΈ количСства доступных ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’ΠΈΠΏ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… констант – EXIT, OK ΠΈΠ»ΠΈ CANΠ‘EL. Команда Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π° холст, поэтому ΠΎΠ½Π° становится Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ. Но всС Π΅Ρ‰Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… событий. Для этого вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ setCommandListener(), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ this, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ класс ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° (SkeletonMIDlet) становится ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄. Π­Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Ρ€Π°Π½Π΅Π΅ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ для ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ класса интСрфСйс CommandListener().

...

Π‘ΠΎΠ²Π΅Ρ‚ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния доступности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ устройств ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ клавиш для использования ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°ΠΌΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с экранными ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· мСню, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΈΠ΄Π»Π΅Ρ‚Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ просто. Π§Π΅ΠΌ Π²Π°ΠΆΠ½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Ρ‚Π΅ΠΌ мСньшС Π½ΠΎΠΌΠ΅Ρ€ Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 соотвСтствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ, Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Skeleton ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Exit присвоСн ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ 2, Ρ‡Ρ‚ΠΎ соотвСтствуСт высокой ваТности ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, значСния ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² рассматриваСмом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚ΠΎ числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ сущСствСнно.

Команда Exit ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton обрабатываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ commandAction():

public void commandAction(Command c, Displayable s) {

if (c.getCommandType() == Command.EXIT) {

destroyApp(true);

notifyDestroyed();

}

}

ΠœΠ΅Ρ‚ΠΎΠ΄Ρƒ commandAction() ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° – ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ экран, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрирована ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π’ рассматриваСмом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ интСрСсна лишь ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Command сравниваСтся с константой Command.EXIT, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ осущСствляСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° Exit. Если Π΄Π°, Ρ‚ΠΎ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ destroyApp() ΠΈ ΠΌΠΈΠ΄Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ. АргумСнт true ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ бСзусловно, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠΈΠ΄Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ Π² любом случаС, Π΄Π°ΠΆΠ΅ Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка. Π—Π°Ρ‚Π΅ΠΌ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ notifyDestriyed(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ΄Π»Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π² состояниС Destroyed. ΠœΠΈΠ΄Π»Π΅Ρ‚ Skeleton Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ pauseApp() ΠΈ destroyApp(), Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² любом случаС:

public void pauseApp() {} public void destroyApp(boolean unconditional) {}

Π₯отя Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ всС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»Π½ΠΎΠ΅ содСрТимоС Ρ„Π°ΠΉΠ»Π° SkeletonMIDlet.java прСдставлСно Π² листингС 3.1. Листинг 3.1. Код класса SkeletonMIDlet, располоТСнный Π² Ρ„Π°ΠΉΠ»Π΅ SkeletonMIDlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SkeletonMIDlet extends MIDlet implements CommandListener {

private SCanvas canvas;

public void startApp() {

if (canvas == null) {

canvas = new SCanvas(Display.getDisplay(this));

Command exitCommand = new Command("Exit", Command.EXIT, 0);

canvas.addCommand(exitCommand);

canvas.setCommandListener(this);

}

// инициализация холста

canvas.start();

}

public void pauseApp() {} //Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ вовсС, ΠΎΠ΄Π½Π°ΠΊΠΎ всС Ρ€Π°Π²Π½ΠΎ

public void destroyApp(boolean unconditional) {} //Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ трСбованиям класса MIDLET

public void commandAction(Command c, Displayable s) {

if (c.getCommandType() == Command.EXIT) {

destroyApp(true); //Π’ ΠΊΠΎΠ½Ρ†Π΅ слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ destroyApp(), хотя Π½Π° самом Π΄Π΅Π»Π΅

notifyDestroyed(); //Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ notifyDestroyed()

}

}

}

ΠžΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton связана с классом SCanvas ΠΈ прСдставлСна Π² листингС 3.2. Листинг 3.2. Класс SCanvas слуТит ΠΊΠ°ΠΊ настраиваСмый холст ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Skeleton

import javax.microedition.lcdui.*;

public class SCanvas extends Canvas {

private Display display;

public SCanvas(Display d) {

super();

display = d;

}

void start() {

display.setCurrent(this); //Π­Ρ‚ΠΎ вСсьма Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ устанавливаСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ холст для ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°

repaint();

}

public void paint(Graphics g) {

// ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ холст

g.setColor(0, 0, 0); // Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ //ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ

g.fillRect(0, 0, getWidth(), getHeight()); //рисованиС Π½Π° холстС,

g.setColor(255, 255, 255); // Π±Π΅Π»Ρ‹ΠΉ //Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½

// вывСсти Ρ€Π°Π·ΠΌΠ΅Ρ€ экрана

int y = 0;

String screenSize = "Screen size: " + Integer.toString(getWidth()) + " x " + Integer.toString(getHeight());

g.drawString(screenSize, 0, y, Graphics.TOP | Graphics.LEFT);

// вывСсти число Ρ†Π²Π΅Ρ‚ΠΎΠ² дисплСя

y += Font.getDefaultFont().getHeight();

String numColors = "# of colors: " + Integer.toString(display.numColors());

g.drawString(numColors, 0, y, Graphics.TOP | Graphics.LEFT);

// вывСсти число доступных Π°Π»ΡŒΡ„Π°-ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ

y += Font.getDefaultFont().getHeight();

String numAlphas = "# of alphas: " + Integer.toString(display.numAlphaLevels());

g.drawString(numAlphas, 0, y, Graphics.TOP | Graphics.LEFT);

// вывСсти ΠΏΠΎΠ»Π½Ρ‹ΠΉ объСм памяти ΠΈ объСм свободной памяти

Runtime runtime = Runtime.getRuntime();

y += Font.getDefaultFont().getHeight();

String totalMem = "Total memory: " + Long.toString(runtime.totalMemory() / 1024) + "KB";

g.drawString(totalMem, 0, y, Graphics.TOP | Graphics.LEFT);

y += Font.getDefaultFont().getHeight();

String freeMem = "Free memory: " + Long.toString(runtime.freeMemory() / 1024) + "KB";

g.drawString(freeMem, 0, y, Graphics.TOP | Graphics.LEFT);

}

}

Класс SCanvas – ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ класса Canvas, Π΅Π³ΠΎ конструктор ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ СдинствСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Display. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ просто опрСдСляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ display, послС Ρ‡Π΅Π³ΠΎ дисплСй ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° доступСн Π² любом мСстС ΠΊΠΎΠ΄Π° холста. ΠœΠ΅Ρ‚ΠΎΠ΄ start() Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ setCurrent() ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Display ΠΈ устанавливаСт холст Π² качСствС экрана. ΠœΠΈΠ΄Π»Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько экранов, Π² этом случаС для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setCurrent(). ΠœΠ΅Ρ‚ΠΎΠ΄ start() Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ repaint(), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ пСрСрисовку холста.

...

Π‘ΠΎΠ²Π΅Ρ‚ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ