返回一个值以供在不同的类中使用

时间:2016-02-27 03:10:48

标签: java jpanel actionlistener

我有类BossInfo,它扩展了JPanel并且有一些组件,比如JLabel,JTextField。我的主要方法是在另一个文件中(“DamageCalculator”)。 基本上,一个值通过动作监听器输入到JTextField中,我想将该值传递给另一个文件(在计算中使用它)。我在逻辑方面遇到了很多麻烦。这是我的班级:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BossInfo extends JPanel {

    private JLabel      bossLabel, resultLabel;
    private JTextField  bossHp;
    String bossHpText = new String("");
    int valRecd = 0;

    public BossInfo() {
        //Labels
        bossLabel = new JLabel("Boss HP: (Hit Enter to set)");
        resultLabel = new JLabel("---");
        //Text field for user input of boss hp
        bossHp = new JTextField(15);
        bossHp.addActionListener(new TempListener());

        //add components
        add(bossLabel);
        add(bossHp);
        add(resultLabel);

    } //end BossInfo object 

    public void setVal(int valRecd) {
        this.valRecd = valRecd;
    }

    private class TempListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {            
            int hp;
            bossHpText = bossHp.getText();
            hp = Integer.valueOf(bossHpText);
            dc.setVal(hp);
            resultLabel.setText(bossHpText);
        }//end action performed
    }//end TempListener
} //end class BossInfo

如何在另一个类中使用bossHpText?如果它是除void之外的任何返回类型,那么“actionPerformed”会生气,所以我不确定它是否意味着返回任何内容。

编辑:根据建议更新代码。

1 个答案:

答案 0 :(得分:1)

valRecd中有变量MainClass

actionPerformed上,为此valRecd调用setter方法,例如

MainClass obj = new MainClass();   //in your constructor.

public void actionPerformed(ActionEvent event) {
        int hp;
        bossHpText = bossHp.getText();
        hp = Integer.parseInt(text);
        obj.setVal(hp);                   //add this line.
        resultLabel.setText(bossHpText);
}

其中setVal可能是这样的:

public void setVal(int valRecd) {
    this.valRecd = valRecd;
}