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

📄 devicepanel.java

📁 J2me唆哈的代码
💻 JAVA
字号:
/*
 * Created on 2005-9-20 by pcy
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package a.a.a.b;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.*;

public class DevicePanel extends JPanel implements MouseListener,MouseMotionListener {

    public static final long serialVersionUID=1;
    public static int BUTTON_CNT=22;
    public static int X=0;
    public static int Y=1;
    public static int W=2;
    public static int H=3;
    
    private Image[] buttonImage=new Image[BUTTON_CNT];
    private int[][] buttonPos=new int[BUTTON_CNT][4];
    
    private Image deviceImage;
    private Image alphabetImage;
    private int alphabetX;
    private int alphabetY;
    
    private int btnIndex;
    private int hotIndex;
    
    Cursor handCursor=new Cursor(Cursor.HAND_CURSOR);
    Cursor arrowCursor=new Cursor(Cursor.DEFAULT_CURSOR);
    
    private EmuButton buttons[];
    public DevicePanel() {
        super();
//        buttons=new EmuButton[22];
//        for(int i=0;i<22;++i){
//        	buttons[i]=new EmuButton(this,getKeyIndex(i));
//        	this.add(buttons[i]);
//        	buttons[i].setVisible(true);
//        }
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
        this.setLayout(null);
        this.setFocusable(false);
    }
    
    private int getKeyIndex(int imgIdx){
    	switch(imgIdx){
    	case 0:
    		return e.KEY_INDEX_SOFT1;
    	case 1:
    		return e.KEY_INDEX_SOFT2;
    	case 2:
    		return e.KEY_INDEX_SEND;
    	case 3:
    		return e.KEY_INDEX_END;
    	case 4:
    		return e.KEY_INDEX_SELECT;
    	case 5:
    		return e.KEY_INDEX_RIGHT;
    	case 6:
    		return e.KEY_INDEX_LEFT;
    	case 7:
    		return e.KEY_INDEX_UP;
    	case 8:
    		return e.KEY_INDEX_DOWN;
    	case 9:
    		return e.KEY_INDEX_NUM1;
    	case 10:
    		return e.KEY_INDEX_NUM2;
    	case 11:
    		return e.KEY_INDEX_NUM3;
    	case 12:
    		return e.KEY_INDEX_NUM4;
    	case 13:
    		return e.KEY_INDEX_NUM5;
    	case 14:
    		return e.KEY_INDEX_NUM6;
    	case 15:
    		return e.KEY_INDEX_NUM7;
    	case 16:
    		return e.KEY_INDEX_NUM8;
    	case 17:
    		return e.KEY_INDEX_NUM9;
    	case 18:
    		return e.KEY_INDEX_STAR;
    	case 19:
    		return e.KEY_INDEX_NUM0;
    	case 20:
    		return e.KEY_INDEX_POUND;
    	case 21:
    		return e.KEY_INDEX_C;
    	}
    	return -1;
    }
    
    public void setImage(Image img){
    	deviceImage=img;
    }
    
    public void setAlphabetImage(Image img){
    	alphabetImage=img;
    }
    
    public void setAlphabetPos(int x, int y){
    	alphabetX=x;
    	alphabetY=y;
    }
    
    public void resetAllButtons(BufferedImage img, int[] pos){
    	int bw=img.getWidth(null)/22;
    	int bh=img.getHeight(null);
    	int x=0;
    	int y=0;
    	int p=0;
    	int bw2=bw/2;
    	int bh2=bh/2;
    	int ox=bw/4;
    	int oy=bh/4;
    	for(int i=0;i<22;++i){
    		if(i>3&&i<9){
    			//buttons[i].setBounds(pos[p++]+ox,pos[p++]+oy,bw2,bh2);
    			//buttons[i].setImage(img.getSubimage(x+ox,y+oy,bw2,bh2));
    			buttonPos[i][X]=pos[p++]+ox;
    			buttonPos[i][Y]=pos[p++]+oy;
    			buttonPos[i][W]=bw2;
    			buttonPos[i][H]=bh2;
    			buttonImage[i]=img.getSubimage(x+ox,y+oy,bw2,bh2);
    		}else{
    			//buttons[i].setBounds(pos[p++],pos[p++],bw,bh);
        		//buttons[i].setImage(img.getSubimage(x,y,bw,bh));
    			buttonPos[i][X]=pos[p++];
    			buttonPos[i][Y]=pos[p++];
    			buttonPos[i][W]=bw;
    			buttonPos[i][H]=bh;
    			buttonImage[i]=img.getSubimage(x,y,bw,bh);
    		}
    		x+=bw;
    	}
    }

    private int getIndex(int x, int y){
    	for(int i=0;i<BUTTON_CNT;++i){
    		if(x>buttonPos[i][X]&&x<buttonPos[i][X]+buttonPos[i][W]
    		       &&y>buttonPos[i][Y]&&y<buttonPos[i][Y]+buttonPos[i][H]){
    			return i;
    		}
    	}
    	return -1;
    }

	public void mouseClicked(MouseEvent evt){
	}
	
	public void mouseEntered(MouseEvent e){
		
	} 
	
	public void mouseExited(MouseEvent e){
		
	}
	
	public void mousePressed(MouseEvent evt){
		btnIndex=getIndex(evt.getX(),evt.getY());
		if(btnIndex>=0){
			e.getInstance(null). keyPressed(e.currentKey[getKeyIndex(btnIndex)]);
			hotIndex=-1;
			paintBtn(btnIndex);
		}
	}
	
	public void mouseReleased(MouseEvent evt){
		int temp=getIndex(evt.getX(),evt.getY());
		if(temp==btnIndex&&btnIndex>=0){
			e.getInstance(null). keyReleased(e.currentKey[getKeyIndex(btnIndex)]);
			hotIndex=temp;
			paintBtn(temp);
		}
		hotIndex=temp;
	}
	
	public void mouseMoved(MouseEvent evt){
		int idx=getIndex(evt.getX(),evt.getY());
		if(idx<0){
			if(btnIndex>=0){
				hotIndex=-1;
				paintBtn(btnIndex);
				this.setCursor(arrowCursor);
			}
		}else{
			if(idx!=btnIndex){
				hotIndex=idx;
				if(btnIndex>=0){
					paintBtn(btnIndex);
				}else{
					this.setCursor(handCursor);
				}
				paintBtn(idx);
			}
		}
		hotIndex=idx;
		btnIndex=idx;
	}
	
	public void mouseDragged(MouseEvent evt){
		
	}
	
	private void paintBtn(int idx){
		if(idx<0)return;
		this.repaint(buttonPos[idx][X],buttonPos[idx][Y],
				buttonPos[idx][W],buttonPos[idx][H]);
	}
    
    protected void paintComponent(Graphics gr){
        if(deviceImage!=null){
            gr.drawImage(deviceImage,0,0,null);
        }
        if(hotIndex>=0){
	        for(int i=0;i<BUTTON_CNT;++i){
	        	if(hotIndex==i){
	        		gr.drawImage(buttonImage[i],buttonPos[i][X],buttonPos[i][Y],null);
	        		break;
	        	}
	        }
        }
        if(alphabetImage!=null){
        	gr.drawImage(alphabetImage,alphabetX,alphabetY,null);
        }
    }
}

⌨️ 快捷键说明

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