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(), выполняющий перерисовку холста.