2013-03-13 3 views
1

Je suis donc relativement nouveau à Java et j'essaie de créer un jeu de dames en utilisant JButtons pour le tableau et pour les pièces. Cependant, je ne peux pas sembler capable de supprimer un JButton via l'ActionListener. Tout avis sera le bienvenu.Ajout et suppression de JButtons dans le code

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); 

Répondre

2

squares.remove? Doit-il lire squares.remove (x)? Pouvons-nous voir la définition des carrés? Est-ce un tableau? Vous devez retirer le bouton du BOARD et non le carré, par ex. board.remove(x)

+0

Oui, désolé, c'est squares.remove (x); J'étais juste en train de déconner et j'ai oublié de mettre à la normale mais cela ne fonctionne toujours pas. Voici comment j'ai initialisé les carrés: JButton [] [] squares = new JButton [8] [8]; –

+0

aussi board.remove attend un int mais x est un objet. –

+0

est un JPanel et devrait également fournir une méthode remove (objet)! BTW: peut-être que vous voulez remplacer le bouton avec un jlabel au lieu de le supprimer vraiment? –

Questions connexes