用一个Stack来存储每一步操作,悔棋pop就行了

解决方案 »

  1.   

    我不是这个意思,用stack存储我已经知道的。
    pop之后,要撤消前一步所画的棋子啊。
    我想问怎么把那个画的棋子给去掉,我现在想只重画要悔棋那个棋子,
    但是重画的时候会把棋子下面的棋盘给画没了,有什么办法啊
      

  2.   

    drugon(更高,更远,更强) “画子的时候,每次只画一个子的点,这样就不用存储很多信息了。”
    这个怎么能做的到啊?
    是把每个棋子的格都单独做成JPanel嘛?那到能实现,不知道够不够复杂。 hellwindy(夜神·月)   “你就把那个子的位置,画上背景棋盘的图案啊”
    即使这样,还是要repaint()的,还有遇到楼主的问题。关注……
      

  3.   

    因该在你的棋盘类里覆盖paintComponent()方法,在里面读取Stack里面的棋子位置的数据,每次paintComponent()方法被调用的时候都把棋盘和所有的棋子重新画一遍,悔棋的时候只需要repaint()一下就可以了。这样还可以省掉管理内存图像buffer的处理。图形绘制方法执行的速度足够快,因此不需要担心画的太慢的问题。
      

  4.   

    呵呵,你当然不能用Graphics的对象去repaint()了,这样当然是重画整个棋盘了。你用Java2D中的一个画圆的方法去画棋子,同时填充颜色,这个应该是不难的吧。这样不就可以了吗?
      

  5.   

    也就是把棋盘做成一个画板,而不是Panel,这样你既可以用Applet也可以用Application。都很好实现。