如何将另一个类中的变量调用到ActionListener方法中?

时间:2016-07-04 05:16:40

标签: java actionevent

我想提前道歉我是java的新手并且不太了解所以请坚持我。我想知道如何将我的角色属性从一个类中的一个ActionListener方法获取到另一个类中的另一个ActionListener方法。我想从一个类中获取用户关于player1的输入,然后在另一个类中使用它们。请帮助,我感谢你的时间。

public void actionPerformed(ActionEvent event) {
    // TODO Auto-generated method stub

    if(event.getSource() == create){

        Character player1 = new Character( Integer.parseInt(strength.getText()), Integer.parseInt(defense.getText()), Integer.parseInt(health.getText()) , Integer.parseInt(dexterity.getText()));
        player1.name = name.getText();

        JOptionPane.showMessageDialog(this, "\nName: " + player1.name + "\nHealth: " + player1.health + "\nStrength: " + player1.strength + "\nDefense: " + player1.defense + "\nDexterity: " + player1.dexterity);
        dispose();//To close the current window

       GameWindow gwindow = new GameWindow();
        gwindow.setVisible(true);//Open the new window
    }

投入

@Override
public void actionPerformed(ActionEvent event) {

    Object source = event.getSource();
    Character Goblin = new Character(10, 3, 6, 10);
    Character Witch = new Character(2, 7, 3, 20);
    Character Zombie = new Character(5, 5, 5, 15);
    int damage;

    if (event.getSource() == right) {

        label1.setText("You have encountered a goblin!");
        label2.setText("Do you wish to fight or flee?");
        fight.setVisible(true);
        flee.setVisible(true);
    }

        if(event.getSource() == fight) {

            System.out.println(player1 + " VS. " + Goblin.name);

            while(player1.isAlive() && Goblin.isAlive()){

                // player 1 attack
                damage = player1.attack(Goblin);
                System.out.println(player1.name + " hits " + Goblin.name + " for " + damage + " damage.");

                // player 2 attack
                damage = Goblin.attack(player1);
                System.out.println(Goblin.name + " hits " + player1.name + " for " + damage + " damage.\n");
            }

            // Check to see who won
            if( player1.isAlive()){
                System.out.println(player1.name + " wins!");
            }
            else{
                System.out.println("You have perished");
            }

        }
}

3 个答案:

答案 0 :(得分:0)

将Player1声明为公共静态成员 所以它的价值可以改变。

并且您可以通过该特定类的对象使用player1。

<div class="english-container" id="logo-page">
    <div class="title">
        <h1>Mean Design.</h1>
        <img class="img-responsive" id="logo" src="MeanDesignLogo.png">
        <h3>ui/ux • web design • graphic design • illustration</h3>
    </div> <!-- title -->
    <i class="fa fa-arrow-circle-down fa-3x" aria-hidden="true"></i>
</div>
<div class="english-container" ></div>

答案 1 :(得分:0)

像这样更改GameWindow构造函数。

class GameWindow extends JFrame implements ActionListener{
    private Character player1;

    public GameWindow(Character player1){
        this.player1 = player1;
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        Object source = event.getSource();
        Character Goblin = new Character(10, 3, 6, 10);
        Character Witch = new Character(2, 7, 3, 20);
        Character Zombie = new Character(5, 5, 5, 15);
        int damage;

        if (event.getSource() == right) {

            label1.setText("You have encountered a goblin!");
            label2.setText("Do you wish to fight or flee?");
            fight.setVisible(true);
            flee.setVisible(true);
        }

        if(event.getSource() == fight) {

            System.out.println(player1 + " VS. " + Goblin.name);

            while(player1.isAlive() && Goblin.isAlive()){

                // player 1 attack
                damage = player1.attack(Goblin);
                System.out.println(player1.name + " hits " + Goblin.name + " for " + damage + " damage.");

                // player 2 attack
                damage = Goblin.attack(player1);
                System.out.println(Goblin.name + " hits " + player1.name + " for " + damage + " damage.\n");
            }

            // Check to see who won
            if( player1.isAlive()){
                System.out.println(player1.name + " wins!");
            }
            else{
                System.out.println("You have perished");
            }

        }
    }
}

并将参数传递给新的构造函数。

public void actionPerformed(ActionEvent event) {
    // TODO Auto-generated method stub

    if(event.getSource() == create){

        Character player1 = new Character( Integer.parseInt(strength.getText()), Integer.parseInt(defense.getText()), Integer.parseInt(health.getText()) , Integer.parseInt(dexterity.getText()));
        player1.name = name.getText();

        JOptionPane.showMessageDialog(this, "\nName: " + player1.name + "\nHealth: " + player1.health + "\nStrength: " + player1.strength + "\nDefense: " + player1.defense + "\nDexterity: " + player1.dexterity);
        dispose();//To close the current window

       GameWindow gwindow = new GameWindow(player1);
        gwindow.setVisible(true);//Open the new window
    }

答案 2 :(得分:0)

在包含要在类ActionListener中调用的对象的类中放入静态访问修饰符,然后在ActionListener方法中对其进行调用。

Eg: class ClassName{

static JButton btn;

   public ClassName(){
   btn=new JButton("");
   add(btn)
  }
}
class Listener implements ActionListener{
   public void actionPerformed(ActionEvent e) {
 if(ClassName.btn.....) //with static access modifier you can 
//call an object from another class in this method;
 }
}