如何使用在名为Program
的类中创建的JButton访问我在名为Die
的主类中创建的Player对象?
我现在的方向(在尝试了很多不同的方法之后)是在一个名为ButtonListener
的单独类中创建ActionListener。
我的Player
类内部是一个我想用JButton调用的方法:
public void roll(int steps) {
setSteps(steps);
System.out.println("Rolled: " + steps);
move();
}
在我的Die
课程中,我构建了JButton:
public class Die extends JPanel {
private List<Integer> die = new ArrayList<Integer>();
private ImageIcon one, two, three, roll;
Random rand = new Random();
int dieValue = 0;
Player player = new Player();
JButton dieButton;
/**
* Constructor for creating the die button
*/
public Die(){
addNumbersToDie();
setDieImages();
dieButton = new JButton();
dieButton.addActionListener(new ButtonListener());
dieButton.setIcon(roll);
add(dieButton);
}
这是我的ButtonListener
课程:
public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
//Call out the roll() method.
}
}
按下按钮时ActionListener工作正常,但我找不到如何在roll(int steps)
类中调用Player
方法的解决方案...
我可以在Player类中创建按钮,但这样太乱了,所以我正在寻找更好的方法。
整个想法是让玩家随着我的JButton移动。
从我的主要类Program
添加了代码:
// Create board.
Board board = new Board();
// Create new player.
Player player = new Player();
// Add player to start.
board.getStart().enterField(player);
// Check if player is on board.
drawBoard(board);
答案 0 :(得分:2)
您可以为侦听器创建一个构造函数,该构造函数将播放器作为参数。
public class ButtonListener implements ActionListener {
private Player p;
public ButtonListener(Player p){
this.p = p;
}
public void actionPerformed(ActionEvent arg0) {
p.roll();
}
}
然后就这样做:
dieButton.addActionListener(new ButtonListener(player));