📄 skilltab.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
/*
* Created on 2005-7-27
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class SkillTab{
private int bgColor;
private int fontColor;
private int highLightColor;
private int darkTabColor;
private int padding;
private int rowIndex;
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;
}
private int x,y,w,h;
private Font font;
private Vector vc;
private String[] tabName;
private int tabIndex;
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;
}
public SkillTab()
{
font=Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_SMALL);
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+=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,font.stringWidth(tabName[i])+padding*2,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+font.getHeight()+padding*2,x+w,y+font.getHeight()+padding*2);
//画选中的tab
g.setColor(bgColor);
g.fillRoundRect(x+getTabBeforeSpace(tabIndex),y,font.stringWidth(tabName[tabIndex])+padding*2,font.getHeight()+padding*2,2,2);
g.setColor(0xFFFFFF);
g.drawRoundRect(x+getTabBeforeSpace(tabIndex),y,font.stringWidth(tabName[tabIndex])+padding*2,font.getHeight()+padding*2,2,2);
g.setColor(0x000000);
g.drawLine(x+getTabBeforeSpace(tabIndex)+font.stringWidth(tabName[tabIndex])+padding*2,y+1,x+getTabBeforeSpace(tabIndex)+font.stringWidth(tabName[tabIndex])+padding*2,y+font.getHeight()+padding*2-1);
g.setColor(bgColor);
g.drawLine(x+getTabBeforeSpace(tabIndex),y+font.getHeight()+padding*2,x+getTabBeforeSpace(tabIndex)+font.stringWidth(tabName[tabIndex])+padding*2,y+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--;
}
}
int tOffset=0; //绘制道具内容显示的垂直偏移量
int bhOffset=0;; //说明区高度偏移量,说明文字超过一行时,内容区高度要缩小
public void paint(Graphics g)
{
drawTab(g);
int by=y+font.getHeight()+padding*2;
int bh=h-font.getHeight()-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=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+padding+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);
g.fillRect(x,by+rowHeight*i+padding+tOffset,w,rowHeight);
}
Skill skill=(Skill)vc.elementAt(i);
g.setColor(fontColor);
g.drawString(skill.getName(),x+padding*2,by+rowHeight*i+padding+tOffset,Style.LT);
}
g.setClip(orgClipX,orgClipY,orgClipWidth,orgClipHeight);
//显示道具说明
if(vc!=null && rowIndex>=0 && rowIndex<vc.size())
{
Skill skill=(Skill)vc.elementAt(rowIndex);
String desc=skill.getDesc();
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=-(font.getHeight()*(descArr.length))-4;
}
else
{
bhOffset=0;
}
int descX=x;
int descY=by+bh+2+bhOffset;
int descStringW=font.stringWidth(desc);
int descH=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+font.getHeight()*i+1,Style.LT);
}
}
}
if(rowIndex<0)
{
bhOffset=0;
}
}
public int getBgColor() {
return bgColor;
}
public void setBgColor(int bgColor) {
this.bgColor = bgColor;
}
public Font getFont() {
return font;
}
public void setFont(Font font) {
this.font = font;
}
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 void addElement(Skill skill)
{
if(vc==null)vc=new Vector();
vc.addElement(skill);
}
public void refreshVC()
{
for(int i=0;vc!=null && i<vc.size();i++)
{
Mat mat=(Mat)vc.elementAt(i);
if(mat!=null)
{
if(mat.getAmount()<=0)
{
vc.removeElement(mat);
}
}else
{
vc.removeElement(mat);
}
}
if(rowIndex>vc.size()-1)
{
rowIndex=vc.size()-1;
}
}
public void removeAll()
{
vc.removeAllElements();
}
public Skill getChoosedElement()
{
if(vc!=null)
{
if(rowIndex>=0 && rowIndex<vc.size())
{
Skill skill=(Skill)vc.elementAt(rowIndex);
return skill;
}
}
return null;
}
public int getFontColor() {
return fontColor;
}
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -