在试图上绘图
然后绘画背景网格
Rectangle r = getBounds();      g2D.setColor(Color.gray);      int hlines = r.height / 8;
      int vlines = r.width / 8;
      for (int j = 0; j < hlines; j++) {//wjp1015
        for (int i = 0; i < vlines; i++) {
          g2D.drawLine(i * 8, j * 8, i * 8, j * 8);
        }
      }并计算出交叉点存进某个列表中.
绘制结束,绘制你要拖动的东西!
在鼠标释放的时候,得到当前鼠标的坐标,判断距离最近的交叉点
然后讲你托放的东西move道交叉点上,即可!

解决方案 »

  1.   

    如果你的棋子是自己draw出来的!
    那么在move的过程中,你要repaint(rectangle)你棋子的区域
    以显示棋子拖动的过程!
    是不是想作个围棋呀!
      

  2.   

    ImageButton(Container container,int i, int j, int k, int l, Image image,)
    作个类。每个棋子对应一个对象。int i, int j, int k, int l 控制位置。if(m_bPressed)
      {
          g.setColor(Color.gray);
          g.drawLine(0, 0, i - 1, 0);
          g.drawLine(0, 0, 0, j - 1);
     }
    if(m_bPressed)
      {
      g.setColor(Color.white);
           g.drawLine(0, j - 1, i - 1, j - 1);
         g.drawLine(i - 1, 0, i - 1, j - 1);
            }
    画出他的阴影。
      

  3.   

    再加mouseDown(Event event, int i, int j)
    mouseDrag(Event event, int i, int j)
    mouseExit(Event event, int i, int j)最麻烦的是控制每个对象能到的区域。那的精确计算了。
      

  4.   

    我建议设置一个二维数组作为交叉点,与UI上的交叉点坐标相对应,
    这样移动规则根据这个二维数组制定
    以马为例
    马的坐标(a,b)
    可以达到的地方是(a+ - 2,b+ -1)和(a+ -1,b+ -2)