for(y=0;y<length;y++){
for(x=0;x<width;x++){
grid[x][y]=new JButton(" ");
grid[x][y].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
((JButton)e.getSource()).setBorder(border);;
System.out.println("Where do you want to move this piece");
}
});
grid[x][y].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent r){
grid[x][y]=grid[x][y-1];
((JButton)r.getSource()).setBorder(border);;
System.out.println("Derp");
}
});
frame.add(grid[x][y]);
}
}
我想点击一个片段然后当你点击一个不同的方块时,该片段会向上移动一个。我知道这是错的,我会展示合法的举动但是现在我需要让这些动作变得更好。请帮忙!! 我完全陷入困境,直到我能解决这个问题。
答案 0 :(得分:2)
首先,请确保所有语法都正确,因为我在此行上看到双半冒号:
((JButton)e.getSource()).setBorder(border);;
此行也应该是ActioneListener的一部分,因为您要设置按钮的边框,而不是在您单击时设置动作。
如果您不想以当前的方式进行更改,请尝试以下操作:您应该创建一个 GameObject 类,让它扩展 JButton 还可以将按钮的边框设置为您想要的大小。现在创建一个游戏对象的 grid [x] [y] 。然后创建一个 Piece 类和一个 Space 类,两者都应该扩展 GameObject 。 piece类应该覆盖 JButton 的 paint(Graphics g)方法并渲染该片段的图像。然后当你点击一个片段时,举起一个标志并在主类中保留这个片段的引用,然后当你点击一个空格时,程序将在两个游戏对象之间交换。 (注意:您必须使用Space类实例填充网格。)
直接处理JButton作为“Pieces”可能很棘手,并不是实现国际象棋游戏的好方法。
我强烈建议您是否真的要创建国际象棋游戏,看看本教程:
http://proghammer.wordpress.com/2010/08/08/chess00-introduction/
这是初学者,一步一步。我用这个创造了一个国际象棋游戏:D Enjoy。