我正在做一个象棋的程序,棋盘和棋子都是Image来的
现在想实现鼠标拖动棋子的效果
我尝试了全部重画的办法,但是这样实在太慢
请问大家有什么好的办法?
后来我想把绘制的代码放到事件那里,发现这样是不能绘制的 public void paint( Graphics g ) {
     Graphics2D g2d = (Graphics2D)g;
     graphics2d = (Graphics2D)g;
     g2d.drawImage(ChessImageList[0],10,10,null);//画棋盘
}
//event
Point point;
Graphics2D graphics2d;

public void mouseMoved(MouseEvent e)
{
point = e.getPoint();
//JOptionPane.showMessageDialog(this, "hello");
graphics2d.drawImage(ChessImageList[7],point.x-18,point.y-18,null);//画某个棋子
}我目前没有用到任何的控件,是否需要什么控件?
谢谢大家

解决方案 »

  1.   

    把棋子用个label试试看,然后给label加上鼠标事件
    鼠标点击移动的时候,改变label的location就行了,这样的话,应该只会重画那些label覆盖过的地方
      

  2.   

    楼主把这个下载下来:http://download.csdn.net/source/253978
      

  3.   

    学习java2D就可以了,或者学习一下RCP+gef