2013-03-13 77 views
1

因此,我对Java相对陌生,尝试使用JButtons为棋盘和棋子创建棋盘游戏。不过,我似乎无法通过ActionListener删除JButton。任何意见,将不胜感激。在代码中添加和删除JButtons

public static void main(String[] args) { 
    checkersBeBitchin begin = new checkersBeBitchin(); 

} 

public checkersBeBitchin(){ 
    box.setLayout(new BorderLayout()); 
    makeBoard(); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 
    setSize(600,600); 
    setTitle("Checkers"); 


     } 

private void makeBoard() { 
    JPanel board = new JPanel(); 
    board.setLayout(new GridLayout(8,8)); 
    for (int i=0; i<8; i++){ 
     for (int j=0; j<8; j++) { 
      squares[i][j] = new JButton(); 
      ActionListener actionListener = new Board(); 
      squares[i][j].addActionListener(actionListener); 
      if((i%2 != 0 && j%2 !=0) ||(i%2==0 && j%2 == 0)){ 
        squares[i][j].setBackground(Color.black); 
        pieceTracker[i][j]=0; 
        //System.out.println("Black"+i+","+j); debugging 
        if(i<3){ 
         int blue = 1; 
         Icon piece = new ImageIcon(getClass().getResource("/resources/piece.png")); 
         JButton button = new JButton(piece); 
         //squares[i][j].setRolloverIcon("image dir") to make it prettier down the road. 
         squares[i][j].add(button); 
         pieceTracker[i][j]=blue; 
         ActionListener Listener = new Blue(); 
         button.addActionListener(Listener); 
         } 
        else if (i>4){ 
         int red=-1; 
         Icon piece = new ImageIcon(getClass().getResource("/resources/piece2.png")); 
         JButton button = new JButton(piece); 

         squares[i][j].add(button); 
         pieceTracker[i][j]=red; 
         ActionListener Listener = new Red(); 
         button.addActionListener(Listener); 
         //squares[i][j].setRolloverSelectedIcon("/resources/piece2alt.png"); 
         } 

      } 
      else{ 
       squares[i][j].setBackground(Color.white); 
       pieceTracker[i][j]=0; 
       //System.out.println("White"+i+","+j); //debugging 
       } 
      board.add(squares[i][j]); 

      } 

     } 
    box.add(board, BorderLayout.CENTER); 
    } 
private class Blue implements ActionListener{ 


    public void actionPerformed (ActionEvent e){ 
     System.out.println("You sexy Blue beast."); 
     Object x = e.getSource(); 
     System.err.println(x); 
     squares.remove(x); 

回答

2

squares.remove?它应该阅读squares.remove(x)?我们可以看到正方形的定义吗?它是一个数组吗?您必须从板上移除按钮而不是方块,例如board.remove(x)

+0

对不起,它是squares.remove(x);我只是乱搞,忘了把它恢复正常,尽管这仍然不起作用。这是我如何初始化正方形:JButton [] [] squares = new JButton [8] [8]; – 2013-03-13 14:54:49

+0

也board.remove期望一个int,但x是一个对象。 – 2013-03-13 15:13:34

+0

board是一个JPanel,并且应该提供一个remove(object)方法!顺便说一句:也许你想用jlabel替换按钮,而不是真正删除它? – 2013-03-13 15:15:06