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

📄 skilltab.java

📁 《神州》RPG游戏引擎
💻 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 + -