📄 scorescreen.java
字号:
import java.io.*;
import java.util.*;
import java.lang.*;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
public class ScoreScreen extends Canvas implements CommandListener
{
private supermario theMidlet;
private Font f1 = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font. SIZE_LARGE);
private Font f2 = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font. SIZE_MEDIUM);
private boolean hasrecord=false;
private Vector sds;
private String dbname="scorebook";
public ScoreScreen(supermario midlet)
{
this.theMidlet=midlet;
Command back=new Command("返回",Command.BACK,1);
Command clear=new Command("清除记录",Command.SCREEN,0);
addCommand(back);
addCommand(clear);
setCommandListener(this);
sds=new Vector();
addData();//增加记录
readData();//读取记录
Calendar ca=Calendar.getInstance();
TimeZone tz = TimeZone.getTimeZone("GMT+8:00");
int year,month,day,hour,minute,second;
//获得时区ID
ca.setTimeZone(tz);
year=ca.get(Calendar.YEAR);
month=ca.get(Calendar.MONTH)+1;
day=ca.get(Calendar.DATE);
hour=ca.get(Calendar.HOUR);
minute=ca.get(Calendar.MINUTE);
second=ca.get(Calendar.SECOND);
}
protected void paint(Graphics g)
{
g.setColor(0,0,0);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(255,255,0);
g.setFont(f1);
g.drawString("最高记录",getWidth()/2-25,15,Graphics.TOP|Graphics.LEFT);
g.drawRect(10,35,getWidth()-20,getHeight()-50);
if(hasrecord==false)
g.drawString("没有记录!",getWidth()/2-25,80,Graphics.TOP|Graphics.LEFT);
else
{
g.setFont(f2);
g.drawString("成绩",15,40,Graphics.TOP|Graphics.LEFT);
g.drawString("姓名",65,40,Graphics.TOP|Graphics.LEFT);
g.drawString("日期",125,40,Graphics.TOP|Graphics.LEFT);
for(int i=0;i<sds.size();i++)
{
ScoreData tmpsd=(ScoreData)sds.elementAt(i);
String sc=Integer.toString(tmpsd.sc);
g.drawString(sc,15,(60+i*20),Graphics.TOP|Graphics.LEFT);
g.drawString(tmpsd.na,65,(60+i*20),Graphics.TOP|Graphics.LEFT);
g.drawString(tmpsd.da,110,(60+i*20),Graphics.TOP|Graphics.LEFT);
}
}
}
protected void keyPressed(int code)
{
int keycode=getGameAction(code);
}
public void commandAction(Command c,Displayable s)
{
if(c.getLabel().equals("返回"))
theMidlet.activateMenuScreen();
else if(c.getLabel().equals("清除记录"))
deleteAllData();
}
public RecordStore openRSAnyway(String rsname)
{
RecordStore rs=null;
if(rsname.length()>32)
return null;
try{
rs=RecordStore.openRecordStore(rsname,true);
return rs;
}catch(Exception e){
System.out.println(e);
return null;
}
}
public void addData()
{
ScoreData sd=new ScoreData();
sd.na="6";
sd.da="2006-07-08";
sd.sc=100;
byte[] tmp=sd.encode();
RecordStore rs=openRSAnyway(dbname);
if(rs==null)
theMidlet.activateMenuScreen();
else
{
try{
rs.addRecord(tmp,0,tmp.length);
rs.closeRecordStore();
}catch(Exception e){
}
}
}
public void deleteAllData()
{
RecordStore rs=openRSAnyway(dbname);
if(rs==null)
theMidlet.activateMenuScreen();
else
{
try{
RecordEnumeration re=rs.enumerateRecords(null,null,false);
if(re.numRecords()!=0)//有记录
{
while(re.hasNextElement())
{
int id=re.nextRecordId();
System.out.println(id);
rs.deleteRecord(id);
}
rs.closeRecordStore();
}
}catch(Exception e){
}
}
}
public void paixu()
{
int i,j,n;
n=sds.size();
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
ScoreData sd1=(ScoreData)sds.elementAt(j);
ScoreData sd2=(ScoreData)sds.elementAt(j+1);
if(sd1.sc<sd2.sc)
{
sds.setElementAt(sd2,j);
sds.setElementAt(sd1,j+1);
}
}
}
}
public void readData()
{
RecordStore rs=openRSAnyway(dbname);
if(rs==null)
theMidlet.activateMenuScreen();
else
{
try{
RecordEnumeration re=rs.enumerateRecords(null,null,false);
if(re.numRecords()==0)//没有记录
hasrecord=false;
else
{
hasrecord=true;
while(re.hasNextElement())
{
ScoreData sd=new ScoreData();
byte tmp[]=re.nextRecord();
sd.decode(tmp);
sds.addElement(sd);
}
rs.closeRecordStore();
paixu();//排序
}
}catch(Exception e){
}
}
}
}
class ScoreData
{
String na,da;
int sc;
public ScoreData()
{
na="";
sc=0;
da="";
}
public byte[] encode()
{
byte[] result=null;
try{
ByteArrayOutputStream bos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bos);
dos.writeInt(sc);
dos.writeUTF(na);
dos.writeUTF(da);
result=bos.toByteArray();
dos.close();
bos.close();
}catch(Exception e){
}
return result;
}
public void decode(byte[] data)
{
try{
ByteArrayInputStream bis=new ByteArrayInputStream(data);
DataInputStream dis=new DataInputStream(bis);
sc=dis.readInt();
na=dis.readUTF();
da=dis.readUTF();
dis.close();
bis.close();
}catch(Exception e){
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -