Π₯ΠΎΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ 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(), Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΡ Ρ ΠΎΠ»ΡΡΠ°.
...Π‘ΠΎΠ²Π΅Ρ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ