⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maincanvas.java

📁 这是个j2me中的RMS的例子,但是如果rms存储的太多数据,那么速度会很慢的
💻 JAVA
字号:
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;


public class MainCanvas extends Canvas implements CommandListener,ItemStateListener{
	private Command exitCommand=new Command("退出",Command.SCREEN,1);
	private Command okCommand=new Command("确定",Command.SCREEN,1);
	private Command backCommand=new Command("返回",Command.SCREEN,1);
	private MainCanvas main;
	
	private String Name[]={"王玮","吉莉","曾毓慧","陈昌伟","黎韧","赵云","郭姝","古君书","林嘉欣","谭立峰"};
	private int Score[]={78,85,59,68,98,47,75,86,89,96};
	public static int id[]=new int[100];
	
	private final String[] list = {"增加","修改","删除"};
	private  int selected_List = 0;//选择变量
	
	private int screen_w = 0;//屏幕宽度
	private int screen_h = 0;//屏幕高度
	private Font font = null;
	
	final public static int Record_Main=1;//主画面
	final public static int Record_Add=2;//添加画面
	final public static int Record_Delete=3;//删除画面
	final public static int Record_Set=4;//修改画面
	final public static int Record_Alert=5;//添加成功&失败提示画面
	final public static int Record_LastSet=6;//修改记录成功&失败提示画面
	final public static int Record_End=7;//删除记录后提示画面
	final public static int Record_SetList=8;//修改列表清单
	
	private int currentCanvas=0;//记录指针
	private boolean addFlag=false;//添加是否成功
//	private boolean deleteFlag=false;//删除是否成功
	private boolean setFlag=false;//修改是否成功
	
	private TextField name;
	private TextField score;
	private TextField note;
	
	/*用来记录改变得变量值*/
	private String Rname,Rnote;
	private int Rscore;
	
	private RmsUtil rms=null;
	private String RSname="testdb";
	private int ID=-1;//记录要被修改的ID
	private int m=0;//增加记录的数量
	
	public MainCanvas() {
		main=this;
		
		addCommand(exitCommand);
		addCommand(okCommand);
		setCommandListener(this);
		
		init_screen();
		currentCanvas=Record_Main;
	}
	public void init_screen()
	{
		for(int i=0;i<100;i++)
		{
			id[i]=-1;
		}
		
		rms=new RmsUtil();
		rms.destroyRS(RSname);
		rms.createRS(RSname);
		for(int i=0;i<Name.length;i++)
		{
			id[i]=rms.AddDate(RSname, Name[i], Score[i],"");
		}
		
		screen_w=this.getWidth();
		screen_h=this.getHeight();
		font=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE);
		
	}

	protected void paint(Graphics g) {
		// TODO 自动生成方法存根
		g.setColor(0xffffff);//清空屏幕
		g.fillRect(0, 0, screen_w, screen_h);
		
		g.setFont(font);
		draw_List(g);
	}
	public void draw_List (Graphics g) {
		if (list != null) {
			int listlen = list.length;
			for (int i = 0; i < listlen; i++) {
				boolean selected = selected_List == i ? true : false;
//				if (selected) { // 选中
//					g.setColor(100,110,210);
//					g.fillRect(0, screen_h*selected_List/3,screen_w,screen_h/3);
//				}
//				g.setColor(0,0,0);
//				g.drawString(list[i], screen_w/2,screen_h*i/3, g.TOP|g.HCENTER);
				if (selected) { // 选中
					g.setColor(255,0,0);
				}
				else
				g.setColor(0,0,0);
				g.drawString(list[i], screen_w/2,screen_h*(i+2)/6, g.TOP|g.HCENTER);
			}
		}
	}
	
	public void keyPressed(int keycode)
	{
		switch (keycode) {
		case -1:
		case 50:
			selected_List--;
			if (selected_List < 0) {
				selected_List = list.length - 1;
			}
			break;
		case -2:
		case 56:
			selected_List++;
			if (selected_List > list.length - 1) {
				selected_List = 0;
			}
			break;
		}
		repaint();
	}

	public void commandAction(Command arg0, Displayable arg1) {
		// TODO 自动生成方法存根
		
		String cmd=arg0.getLabel();
		
		if(cmd.equals("确定"))
		{
			switch(currentCanvas)
			{
			case Record_Main:
			switch(selected_List)
			{
				case 0:
					paintAddForm();
					break;
				case 1:
                    paintSetList();
					break;
				case 2:
					paintDeleteList();
				    break;
			}
			break;
			case Record_Add:
				change(ID);
				
				Alert addAlert=new Alert("提示信息");
				currentCanvas=Record_Alert;
				
				addAlert.addCommand(backCommand);
				addAlert.addCommand(okCommand);
				addAlert.setCommandListener(this);
				
				if(addFlag)
				{
					addAlert.setString("恭喜你的资料已经添加成功!");
					addAlert.setType(AlertType.CONFIRMATION);
					addAlert.setTimeout(Alert.FOREVER);
					addFlag=false;
				}
				else if(m>90)
				{
					addAlert.setString("你的内存已满");
					addAlert.setType(AlertType.ERROR);
					addAlert.setTimeout(Alert.FOREVER);
				}
				else
				{
					addAlert.setString("你的资料有错误,请重新输入!");
					addAlert.setType(AlertType.ERROR);
					addAlert.setTimeout(Alert.FOREVER);
				}
				show(addAlert);
				break;
			case Record_SetList:
				paintSetForm();
				ID=setRecordList.getSelectedIndex();
				setRecordList=null;
				break;
			case Record_Set:				
	     		change(ID+1);
				ID=-1;

				Alert setAlert=new Alert("提示信息");
				currentCanvas=Record_LastSet;
				
				setAlert.addCommand(backCommand);
				setAlert.addCommand(okCommand);
				setAlert.setCommandListener(this);
				
				if(setFlag)
				{
					setAlert.setString("恭喜你的资料已经修改成功!");
					setAlert.setType(AlertType.CONFIRMATION);
					setAlert.setTimeout(Alert.FOREVER);
					setFlag=false;
				}
				else
				{
					setAlert.setString("你的资料有错误,请重新输入!");
					setAlert.setType(AlertType.ERROR);
					setAlert.setTimeout(Alert.FOREVER);
				}
				show(setAlert);
				break;
			case Record_Delete:
				ID=deleteRecordList.getSelectedIndex();
				change(ID);
				ID=-1;
				
				Alert deleteAlert=new Alert("提示信息");
				currentCanvas=Record_End;
				
				deleteAlert.addCommand(okCommand);
				deleteAlert.setCommandListener(this);
				
					deleteAlert.setString("恭喜你删除成功!");
					deleteAlert.setType(AlertType.CONFIRMATION);
					deleteAlert.setTimeout(Alert.FOREVER);

				show(deleteAlert);
				deleteRecordList=null;
				break;
			case Record_Alert:
				currentCanvas=Record_Main;
				show(main);
				break;
			case Record_LastSet:
				currentCanvas=Record_Main;
				show(main);
				break;
			case Record_End:
		        paintDeleteList();
				break;
		}
		}
		
		
		else if(cmd.equals("退出"))
		{
			rms.destroyRS(RSname);
			RecordTest1.quitApp();
			
		}
		
		
		else if(cmd.equals("返回"))
		{
			switch(currentCanvas)
			{
			case Record_Add:
			case Record_SetList:
			case Record_Delete:
				currentCanvas=Record_Main;
				show(main);
				break;
			case Record_Set:
			case Record_LastSet:
				paintSetList();
				break;
			case Record_Alert:
				paintAddForm();
				break;
			}
		}
	}
	
	public void paintAddForm()
	{
		Form addRecordForm=new Form("增加一个记录");
		
		 name=new TextField("姓名","",8,TextField.ANY);
		 score=new TextField("分数","",4,TextField.PHONENUMBER);
		 note=new TextField("备注","",30,TextField.ANY);
		 
		addRecordForm.append(name);
		addRecordForm.append(score);
		addRecordForm.append(note);
		
		currentCanvas=Record_Add;
		
		addRecordForm.addCommand(backCommand);
		addRecordForm.addCommand(okCommand);
		addRecordForm.setCommandListener(this);
		addRecordForm.setItemStateListener(this);
		show(addRecordForm);
		addRecordForm=null;
	}
	
	public void paintSetForm()
	{
		Form setRecordForm=new Form("修改一个记录");
		
		 name=new TextField("姓名","",8,TextField.ANY);
		 score=new TextField("分数","",4,TextField.PHONENUMBER);
		 note=new TextField("备注","",30,TextField.ANY);
		setRecordForm.append(name);
		setRecordForm.append(score);
		setRecordForm.append(note);
		
        currentCanvas=Record_Set;
		
        setRecordForm.addCommand(backCommand);
        setRecordForm.addCommand(okCommand);
        setRecordForm.setCommandListener(this);
        setRecordForm.setItemStateListener(this);
        show(setRecordForm);
        setRecordForm=null;
	}
	List setRecordList;
	
	public void paintSetList()
	{
		setRecordList=new List("请选择一个记录",List.IMPLICIT);
		currentCanvas=Record_SetList;
		
		
		for(int i=0;i<100;i++)
		{
			if(id[i]>=0)
			{	
				
				String[] s=rms.readDate(RSname, id[i]);				
//				System.out.println("paintSetList id[" + i +  "] =" + id[i]);
//				System.out.println(s[0]+" "+Integer.parseInt(s[1])+" "+s[2]);
				setRecordList.append(s[0]+" "+Integer.parseInt(s[1])+" "+s[2], null);
			}
		}
		
		setRecordList.addCommand(backCommand);
		setRecordList.addCommand(okCommand);
		setRecordList.setCommandListener(this);
		show(setRecordList);
	}
	
	
	List deleteRecordList;
	public void paintDeleteList()
	{
		deleteRecordList=new List("删除一个记录",List.IMPLICIT);
		currentCanvas=Record_Delete;
				
		for(int i=0;i<100;i++)
		{
			if(id[i]>=0)
			{
				String[] s=rms.readDate(RSname, id[i]);
				deleteRecordList.append(s[0]+" "+Integer.parseInt(s[1])+" "+s[2], null);
			}
		}
		
		deleteRecordList.addCommand(backCommand);
		deleteRecordList.addCommand(okCommand);
		deleteRecordList.setCommandListener(this);
		show(deleteRecordList);
	}
	public void itemStateChanged(Item item) {
		// TODO 自动生成方法存根
		
		if(item==name)
			Rname = name.getString();
		else if(item==score)
			Rscore=Integer.parseInt(score.getString());
		else if(item==note)
			Rnote=note.getString();
		
	}
	
	/* 显示当前的画面*/
	public void show(Displayable d)
	{
		RecordTest1.display.setCurrent(d);
	}
	
	/*保存数据或者修改数据*/
	public void change(int number)
	{
		switch(currentCanvas)
		{
		case Record_Add:
//			System.out.println("ok 00001");
			if(!addFlag&&m<91)
			{
				if(Rname!=null&&Rscore!=0)
				{
					if(Rnote==null)Rnote="";
					id[m+10]=rms.AddDate(RSname, Rname, Rscore, Rnote);
					addFlag=true;
					Rname=null;
					Rscore=0;
					Rnote=null;
					m++;
				}
			}
			break;
		case Record_Set:
//			System.out.println("ok 00002");
			if(!setFlag)
			{
				if(Rname!=null&&Rscore!=0)
				{  
					if(Rnote==null)Rnote="";
//					System.out.println("number = " + number);
					rms.SetDate(RSname,number,Rname,Rscore,Rnote);
					setFlag=true;
					Rname=null;
					Rscore=0;
					Rnote=null;

				}
			}
			break;
		case Record_Delete:
			rms.DeleteDate(RSname, number);
			id[number]=-1;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -