-1

如何访问我在名为的主类中创建的 Player 对象,该类使用在名为Program的类中创建的 JButton Die

我现在要去的方向(在尝试了很多不同的方法之后)是在一个名为ButtonListener.

在我的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);
4

1 回答 1

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));
于 2013-10-24T19:02:50.080 回答