我有类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”会生气,所以我不确定它是否意味着返回任何内容。
编辑:根据建议更新代码。
答案 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;
}