import javax.microedition.lcdui.*; public class Menu extends Canvas { private Main midlet; private Image logo; private int w, h, x_kur, num_kur, x_list; private int h_kur, h_menu, h_label; private int flag; private float redstep, greenstep, bluestep; private Font labelFont, itemFont; private String menu_label, menu_left, menu_right; private String[] menu_list; private boolean menu_return=false; /** * constructor */ public Menu() { setFullScreenMode(true); //ширина и высота экрана w=getWidth(); h=getHeight(); //шрифт для заголовков и пунктов меню labelFont=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM); itemFont=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE); //ничего пока не надо отображать flag=0; //высота пункта меню и курсора h_kur=itemFont.getHeight(); //высота отступа сверху и снизу h_label=40; //высота места для пунктов меню h_menu=h-h_label*2; //положение курсора по х x_kur=h_label; //положение для отрисовки пунктов меню x_list=h_label; //номер пункта меню num_kur=1; } /** * paint */ public void paint(Graphics g){ /*если идет загрузка*/ if(flag==1){ g.setColor(0,0,0); g.fillRect(0,0,w,h); g.drawImage(logo,w/2,h/2, Graphics.VCENTER|Graphics.HCENTER); g.setFont(labelFont); g.setColor(255,255,0); g.drawString("Vendor", w/2, h/2+logo.getHeight()/2, Graphics.TOP|Graphics.HCENTER); } /*если отображается главное меню*/ if(flag==2){ gradient(g, 80,80,255, 0,0,55, 0, 0, w-1, h_label); gradient(g, 80,80,255, 0,0,55, 0, h-h_label, w, h_label); g.setColor(0,0,0); g.fillRect(0,h_label,w,h_menu); g.setColor(0xffffff); g.drawRect(0,0,w-1,h_label-1); g.drawRect(0,h-h_label,w-1,h_label-1); g.setColor(255,255,0); g.setFont(labelFont); g.drawString(menu_label,w/2,1, Graphics.TOP|Graphics.HCENTER); g.drawString(menu_left,3,h-5, Graphics.BASELINE|Graphics.LEFT); g.drawString(menu_right,w-5,h-5, Graphics.BASELINE|Graphics.RIGHT); g.drawString(" "+num_kur,0,h-70, Graphics.TOP|Graphics.LEFT); g.setClip(0,h_label,w,h_menu); g.setFont(itemFont); gradient(g, 0,0,0, 0,0,200, 0, x_kur, w, h_kur/2); gradient(g, 0,0,200, 0,0,0, 0, x_kur+h_kur/2, w, h_kur/2); g.setColor(0xffffff); for(int i=0;i(h_menu+h_label-h_kur)||num_kur>menu_list.length){ x_kur-=h_kur; x_list-=h_kur; if(num_kur>menu_list.length){ x_kur=h_label; x_list=h_label; num_kur=1; } } } //листаем вверх меню if(key==50||key==-3){ x_kur-=h_kur; num_kur--; if(x_kur