2013-03-13 78 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