昨天,做个AWT的小程序。menu中选项改变的话,则重新加载对应的组件。

 就是说,当用户选择“二打一”的时候,程序要加载TwoBeatOneBoard;当用户选择“五子棋”的时候,面板要擦掉之前的“二打一”,重新加载“五子棋”。

 

试了,很多重绘的方法,都不能解决。都只是,在原有图像上面进行覆盖。

 

解决办法:在每次加载之前进行判断,如果已经包含了Board,就从Frame中删除Board。否则,直接加载。

代码如下:

if(this.isAncestorOf(board)){

this.remove(board);

}

board = new RenJuBoard();

// 配置默认棋手

pya = new com.org.ouc.RenJu.RandomPlayer(); 

   pya.setTurn(-1);

   BoardAgentA = new RenJuBoardAgent();

BoardAgentA.setBoard(board);

pya.setBoardAgent(BoardAgentA);

   pyb = new com.org.ouc.RenJu.RandomPlayer();  

   pyb.setTurn(1);

   BoardAgentB = new RenJuBoardAgent();

BoardAgentB.setBoard(board);

pyb.setBoardAgent(BoardAgentB);

     board.setBounds(rightPartX, boardY,rightPartXLen,boardWidth);

this.add(board);

board.repaint();   // 调用上面的paint()方法