首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将另一个类的变量调用到ActionListener方法中?

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

Stack Overflow用户
提问于 2016-07-04 13:16:40
回答 3查看 321关注 0票数 1

我想提前道歉,我是新来爪哇的,不太懂,请跟我来。我想知道如何将角色属性从一个类中的一个ActionListener方法获取到另一个类中的另一个ActionListener方法。我想在一个类中从用户那里获得关于player1的输入,然后在另一个类中使用它们。请帮助我,感谢您的宝贵时间。

代码语言:javascript
复制
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
    }

放入

代码语言:javascript
复制
@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");
            }

        }
}
EN

回答 3

Stack Overflow用户

发布于 2016-07-04 13:30:15

将Player1声明为公共静态成员,这样它的值就不能更改。

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

代码语言:javascript
复制
    Class First{
          //Declare That Character object as a static public here
          //Player1;
           }
    Class Second{
          //First Create Object Of that class....
          First f = new First(//Parameter For Constructor);
          f.Player1;

           }
票数 0
EN

Stack Overflow用户

发布于 2016-07-04 16:38:10

如下所示更改您的GameWindow构造函数。

代码语言:javascript
复制
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");
            }

        }
    }
}

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

代码语言:javascript
复制
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
    }
票数 0
EN

Stack Overflow用户

发布于 2020-09-09 04:50:21

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

代码语言:javascript
复制
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;
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38177376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档