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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2MeΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор Автор нСизвСстСн

return instance;

}

public void display!)

{

Display. getDisplay(this). setCurrent(textBox);

}

public void commandAction(Command c, Displayable d)

if (c == quit)

{

quit();

}

}

}


Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ· конструктора, Ρ‡Ρ‚ΠΎ TextBox сходСн с TextField, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся многострочной тСкстовой ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ. АргумСнтами ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкст, максимальноС количСство Π·Π½Π°ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΈ ограничСния Π²Π²ΠΎΠ΄Π°. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² классС TextField.

На рисункС 5.11 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ тСкст, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для создания экзСмпляра TextBox. Как ΠΈ Π² случаях с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π²Ρ‹ просто Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ TextBox с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Select эмулятора ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ содСрТимоС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… клавиш стрСлок, ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиши Clear (ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ) ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈ использовании эмулятора. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимым с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ вставку, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, установку максимального Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, установку ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. На рисункС 5.12 ΠΏΠΎΠΊΠ°Π·Π°Π½ экран послС Π²Ρ‹Π±ΠΎΡ€Π° тСкстового ΠΎΠΊΠ½Π° для рСдактирования.




Рисунок 5.12. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ интСрфСйс, прСдоставляСмый для рСдактирования тСкстового ΠΎΠΊΠ½Π°, зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ


Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎ Π³Π»Π°Π²Π΅

Π­Ρ‚Π° Π³Π»Π°Π²Π° Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ вас с ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса MIDP. БущСствуСт Π΄Π²Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: Ρ‚Π΅, Ρ‡Ρ‚ΠΎ располоТСны ΠΏΠΎΠ΄ Displayable Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, ΠΈ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ находятся ΠΏΠΎΠ΄ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Item.

Класс Screen происходит нСпосрСдствСнно ΠΈΠ· Displayable ΠΈ опрСдСляСт основныС абстракции Π² MIDP. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MIDP Π² своСй основС Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° экранах.

Form, Π²ΠΈΠ΄ Screen, являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ экрана, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Form ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ String, изобраТСния, опрСдСляСмыС классом Image, ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡ΡŒΠΈ Ρ‚ΠΈΠΏΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ подклассами класса Item.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ MIDP Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ способно ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с экрана Π½Π° экран. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ экраны Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ссылки Π² экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° экрана, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дисплСй Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. Бтандартная ΠΈΠ΄ΠΈΠΎΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² прСдоставлСнии статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ссылку Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт экран.

Π’ Π³Π»Π°Π²Π΅ 3 прСдставлСна полная программная структура ΠΈ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Ρ‹ программирования. Π’ Π³Π»Π°Π²Π΅ 4 описан высокоуровнСвый API MIDP. Π­Ρ‚Π° Π³Π»Π°Π²Π° дополняСт всС это знакомством с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ MIDP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ высокоуровнСвый API.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ API MIDP.

Π“Π»Π°Π²Π° 6. НизкоуровнСвый ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс прилоТСния (API) MIDP

Π’ этой Π³Π»Π°Π²Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс прилоТСния MIDP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… интСрфСйсов прилоТСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса MIDP. О ΠΏΠ΅Ρ€Π²ΠΎΠΌ API MIDP, высокоуровнСвом, Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 4. НизкоуровнСвый API Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² высокоуровнСвом API ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π±Ρ‹Π»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:

ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ событиях (Ρ‚Π°ΠΊΡƒΡŽ, ΠΊΠ°ΠΊ информация ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ваш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚; ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ внСшний Π²ΠΈΠ΄ своСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π”Π²Π° класса ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ API: javax.microedition.lcdui. Canvas; javax.microedition.lcdui.Graphics.

На рисункС 6.1 воспроизводится Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования MIDP, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° рисункС 5.1. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Canvas происходит ΠΈΠ· Displayable.



Рисунок 6.1. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Canvas ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° экранС, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экранами, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ элСмСнты абстракции экрана, прСдставлСнной Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… высокоуровнСвого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса MIDP


Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ класс Canvas Π½Π΅ являСтся Ρ‚ΠΈΠΏΠΎΠΌ Screen, ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ абстракции, опрСдСляСмой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Screen, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ Ρ‚ΠΈΠΊΠ΅Ρ€Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Класс Canvas являСтся абстрактным. Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ подклассы. Π’Π°Ρˆ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ подкласс описываСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ событий ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Graphics опрСдСляСт свой собствСнный внСшний Π²ΠΈΠ΄. Подкласс прСдоставляСт возмоТности ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ событий, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΡ‚ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Screen.


OΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ событий

Π’ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Canvas Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ высокоуровнСвыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° Canvas, ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…. Canvas Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ CommandListener ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ свой собствСнный Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ.

Однако, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ высокоуровнСвых ΠΊΠΎΠΌΠ°Π½Π΄, класс Canvas Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Canvas сами ΡΠ²Π»ΡΡŽΡ‚ΡΡ источниками Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… событий клавиш ΠΈ указатСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ дСйствиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ указатСля Π½Π° устройствС. Они Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ своими собствСнными Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… событий. Класс Canvas опрСдСляСт интСрфСйс для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… событий ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ своСго собствСнного API, Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ интСрфСйса Π±Π»ΠΎΠΊΠ° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ рСализуСтся.

РСализация MIDP ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ событии Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Canvas, вызывая ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Canvas. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6.1 пСрСчислСны Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.


Π’Π°Π±Π»ΠΈΡ†Π° 6.1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ увСдомлСния ΠΎ событиях Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ API


НазваниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€” ОписаниС

protected void keyPressed(int KeyCode) β€” Клавиша Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° ΠΈ ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½Π°

protected void keyReleased.(int KeyCode) β€” Клавиша Π±Ρ‹Π»Π° ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½Π°

protected void keyRepeated(int KeyCode) β€” Клавиша Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° нСсколько Ρ€Π°Π·

protected void pointerPressed(int x, int y) β€” Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚

protected void pointerDragged(int x, int y) β€” Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½

protected void pointerReleased(int x, int y) β€” Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½

protected abstract void paint(Graphics g) β€” ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» запрос Canvas Π½Π° пСрСрисовку


Для выполнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ваш ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ подкласс Canvas Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ большС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², пСрСчислСнных Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6.1. НС подмСняя пустыС описания класса Canvas, Π²Ρ‹ пропускаСтС события ΠΈ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ваш подкласс Canvas Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ paint (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ абстрактным Π² Canvas.

Π’ листингах 6.1 ΠΈ 6.2 прСдставлСна простая схСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ событий Π² Canvas. Код Π² листингС 6.1 являСтся ΠΊΠΎΠ΄ΠΎΠΌ MID-Π»Π΅Ρ‚Π° для дСмонстрационной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выглядит Π·Π½Π°ΠΊΠΎΠΌΠΎ. Код Π² листингС 6.2, ΠΎΠ΄Π½Π°ΠΊΠΎ, создаСт подкласс Canvas β€” Displayable, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ согласно ΠΊΠΎΠ΄Ρƒ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² листингС 6.1, размСщаСтся Π½Π° экранС.


Листинг 6.1. ДСмонстрационной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ CanvasDemol трСбуСтся MID-Π»Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ МIDΠ 


import javax.microedition.midlet.MIDlet;

import javax.microedition.lcdui.Display;

/"


ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ MID-Π»Π΅Ρ‚, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ пустой Canvas Π½Π° дисплСС устройства.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Canvas являСтся ЭкзСмпляром класса Canvasl.


@смотри Canvasl

*/

public class CanvasDemol extends MIDlet

{

// ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ссылку Π½Π° экзСмпляр Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса.

private static CanvasDemol midlet;

// ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ссылку Π½Π° Canvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ

// Π²ΠΈΠ΄ΠΈΡ‚ Π½Π° дисплСС.

private static Canvasl instance;

private Display display; private Canvasl canvas;

/**


ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ No-arg. Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор no-arg класса MID-Π»Π΅Ρ‚Π°.


*/

public CanvasDemol()

super();

display = Display.getDisplay(this); instance = canvas; midlet = this;

{

/**


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° MID-Π»Π΅Ρ‚, связанный с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.


@Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ MID-Π»Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

**/

public static CanvasDemol getMIDlet()

{

return midlet;

{

public void startApp()

{

canvas = new Canvasl ();

display.setCurrent(canvas);

(

public void pauseApp()

{

}

public void destroyApp(boolean destroy)

{

instance = null;

canvas = null;

void quit ()

{

destroyApp(true);

notifyDestroyed();

}

}


Листинг 6.2. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Canvas, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ подкласс Canvas


import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Graphics;

/**


ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ подкласс Canvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отобраТаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MID-Π»Π΅Ρ‚Π° CanvasDemol. Π­Ρ‚ΠΎΡ‚ Canvas ΠΈΠΌΠ΅Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«ExitΒ», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ дСмонстрационной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.