📄 recordtab.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
public class RecordTab
{
private int bgColor;
private int fontColor;
private int highLightColor;
private int darkTabColor;
private int padding;
private int rowIndex, rowIdx_X, rowIdx_Y, rowIdx_W, rowIdx_H;
private int x,y,w,h;
private Vector vc;
private String[] tabName;
private int tabIndex;
private int[] saleCount;
private String desc;
int tOffset = 0; //绘制道具内容显示的垂直偏移量
int bhOffset = 0; //内容区高度偏移量,说明文字超过一行时,内容区高度要缩小
public RecordTab()
{
fontColor = 0x000000;
darkTabColor = 0x9EB88A;
padding = 3;
rowIndex = -1;
}
public int getHighLightColor()
{
return highLightColor;
}
public void setHighLightColor(int highLightColor)
{
this.highLightColor = highLightColor;
}
private int getTabBeforeSpace(int index)
{
int beforeSpace = 0;
for(int i = 0; i < index; i++)
{
beforeSpace += Style.font.stringWidth(tabName[i])+6;
}
return beforeSpace;
}
private void drawTab(Graphics g)
{
//先画未选中的tab
for(int i=0; tabName!=null && i<tabName.length;i++)
{
if(tabIndex!=i)
{
g.setColor(darkTabColor);
g.fillRoundRect(x+getTabBeforeSpace(i),y+padding,Style.font.stringWidth(tabName[i])+padding*2,Style.font.getHeight()+padding*2,2,2);
g.setColor(0x000000);
g.drawString(tabName[i],x+getTabBeforeSpace(i)+padding,y+padding*2,Style.LT);
}
}
//画下白线
g.setColor(0xFFFFFF);
g.drawLine(x,y+Style.font.getHeight()+padding*2,x+w,y+Style.font.getHeight()+padding*2);
//画选中的tab
g.setColor(bgColor);
g.fillRoundRect(x+getTabBeforeSpace(tabIndex),y,Style.font.stringWidth(tabName[tabIndex])+padding*2,Style.font.getHeight()+padding*2,2,2);
g.setColor(0xFFFFFF);
g.drawRoundRect(x+getTabBeforeSpace(tabIndex),y,Style.font.stringWidth(tabName[tabIndex])+padding*2,Style.font.getHeight()+padding*2,2,2);
//g.setColor(0xFFFFFF);
//g.drawLine(x,y+Style.font.getHeight()+padding*2,x+w,y+Style.font.getHeight()+padding*2);
g.setColor(0x000000);
g.drawLine(x+getTabBeforeSpace(tabIndex)+Style.font.stringWidth(tabName[tabIndex])+padding*2,y+1,x+getTabBeforeSpace(tabIndex)+Style.font.stringWidth(tabName[tabIndex])+padding*2,y+Style.font.getHeight()+padding*2-1);
g.setColor(bgColor);
g.drawLine(x+getTabBeforeSpace(tabIndex)+1,y+Style.font.getHeight()+padding*2,x+getTabBeforeSpace(tabIndex)+Style.font.stringWidth(tabName[tabIndex])+padding*2-1,y+Style.font.getHeight()+padding*2);
g.setColor(0x000000);
g.drawString(tabName[tabIndex],x+getTabBeforeSpace(tabIndex)+padding,y+padding,Style.LT);
}
public void nextRow()
{
if (vc == null || vc.size() == 0)
{
rowIndex = -1;
return;
}
if(rowIndex < vc.size()-1)
{
rowIndex++;
}
}
public void prevRow()
{
if(vc==null || vc.size()==0)
{
rowIndex = -1;
return;
}
if(rowIndex > -1)
{
rowIndex--;
}
}
public String getDesc()
{
return desc;
}
public void paint(Graphics g, int inStatus)
{
g.setFont(Style.font);
drawTab(g);
int by = y + Style.font.getHeight()*1 + padding*2;
int bh = h - Style.font.getHeight()*1 - padding*2;
g.setColor(bgColor);
g.fillRect(x, by+1, w, bh+bhOffset-1);
g.setColor(0x000000);
g.drawLine(x, by+bh+bhOffset, x+w, by+bh+bhOffset);
g.drawLine(x+w, by, x+w, by+bh+bhOffset);
g.setColor(0xFFFFFF);
g.drawLine(x, by, x, by+bh+bhOffset);
//int row=0;
int rowHeight = Style.font.getHeight();
//取得原先的绘制区域
int orgClipX = g.getClipX();
int orgClipY = g.getClipY();
int orgClipWidth = g.getClipWidth();
int orgClipHeight = g.getClipHeight();
//计算偏移量
if(rowIndex>=0 && vc!=null && rowIndex<vc.size())
{
int currentY = by+rowHeight*rowIndex + tOffset;
if(currentY+rowHeight>by+bh+bhOffset) //超过最下面,减偏移量
{
tOffset -= currentY+rowHeight-(by+bh+bhOffset);
}
else if(currentY<by) //少于最上面,加偏移量
{
tOffset += by-currentY;
}
}
for(int i=0; vc!=null && i<vc.size();i++)
{
g.setClip(x, by+1, w, bh+bhOffset-2);
if(i==rowIndex)
{
g.setColor(highLightColor);
rowIdx_X = x;
rowIdx_Y = by+rowHeight*i+tOffset;
rowIdx_W = w;
rowIdx_H = rowHeight;
g.fillRect(rowIdx_X, rowIdx_Y, rowIdx_W, rowIdx_H);
}
String strTemp = (String)vc.elementAt(i);
g.setColor(fontColor);
g.drawString(strTemp, x+padding*2, by+rowHeight*i+tOffset, Style.LT);
String str = "";
if (i == 2)
{
if(GameMIDlet.isSonic) //声音
str = "开";
else
str = "关";
g.drawString(str, x + w/2 + padding*2 + 10, by + rowHeight*i + tOffset, Style.RT);
}
if (i == 3)
{
if(GameMIDlet.isVibratory) //振动
str = "开";
else
str = "关";
g.drawString(str, x + w/2 + padding*2 + 10, by + rowHeight*i + tOffset, Style.RT);
}
}
g.setClip(orgClipX, orgClipY, orgClipWidth, orgClipHeight);
this.showDesc(g, this.getRowIndex(), by, bh);
}
private void showDesc(Graphics g, int lineIndex, int by, int bh)
{
switch (lineIndex)
{
case 0: //保存进度
desc = "保存进度";
break;
case 1: //读取进度
desc = "读取进度";
break;
case 2: //音乐
desc = "音乐";
break;
case 3: //振动
desc = "振动";
break;
case 4: //退出游戏
desc = "退出游戏";
break;
default:
desc = "系统菜单";
}
//System.out.println(lineIndex);
if(desc != null && !desc.equals(""))
{
int descW = w;
String[] descArr = Tools.splitString(desc, descW - padding * 2);
bhOffset = 0;
if (descArr != null && descArr.length > 0) {
bhOffset = - (Style.font.getHeight() * (descArr.length));
}
else {
bhOffset = 0;
}
int descX = x;
int descY = by + bh + 2 + bhOffset;
int descStringW = Style.font.stringWidth(desc);
int descH = Style.font.getHeight() * descArr.length + 2;
g.setColor(bgColor);
g.fillRect(descX, descY, descW, descH); //对话框背景色
g.setColor(0xFFFFFF);
g.drawLine(descX, descY, descX + descW, descY);
g.drawLine(descX, descY, descX, descY + descH);
g.setColor(0x000000);
g.drawLine(descX, descY + descH, descX + descW, descY + descH);
g.drawLine(descX + descW, descY, descX + descW, descY + descH);
g.setColor(0x000000);
for (int i = 0; descArr != null && i < descArr.length; i++)
{
g.drawString(descArr[i], descX + padding, descY + Style.font.getHeight() * i + 1, Style.LT);
}
}
}
public void addElement(String str)
{
if(vc == null)
vc = new Vector();
vc.addElement(str);
}
public int getBgColor()
{
return bgColor;
}
public void setBgColor(int bgColor)
{
this.bgColor = bgColor;
}
public int getH()
{
return h;
}
public void setH(int h)
{
this.h = h;
}
public int getW()
{
return w;
}
public void setW(int w)
{
this.w = w;
}
public void setPosition(int x,int y)
{
this.x = x;
this.y = y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public int getIdxRowX()
{
return rowIdx_X;
}
public int getIdxRowY()
{
return rowIdx_Y;
}
public int getIdxRowW()
{
return rowIdx_W;
}
public int getIdxRowH()
{
return rowIdx_H;
}
public Vector getVC()
{
return vc;
}
public int getFontColor()
{
return fontColor;
}
public void setFontColor(int fontColor)
{
this.fontColor = fontColor;
}
public void setSaleCount(int[] saleCount)
{
this.saleCount = saleCount;
}
public int getPadding()
{
return padding;
}
public void setPadding(int padding)
{
this.padding = padding;
}
public int getRowIndex()
{
return rowIndex;
}
public void setRowIndex(int rowIndex)
{
this.rowIndex = rowIndex;
}
public int getDarkTabColor()
{
return darkTabColor;
}
public void setDarkTabColor(int darkTabColor)
{
this.darkTabColor = darkTabColor;
}
public int getTabIndex()
{
return tabIndex;
}
public void setTabIndex(int tabIndex)
{
this.tabIndex = tabIndex;
}
public String[] getTabName()
{
return tabName;
}
public void setTabName(String[] tabName)
{
this.tabName = tabName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -