昨天,做个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()方法