У меня есть класс 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 в другом классе? «ActionPerformed» сходит с ума, если это какой-либо тип возврата, отличный от void, поэтому я не уверен, что он должен что-то вернуть.
EDIT: Код обновлен на основе предложений.
Вы можете иметь публичную переменную в другой класс, получает изменение actionPerformed() – WIR3D
Ahh, интересно. Итак, скажем, я просто хочу напечатать значение bossHpText из основного метода: Открытый класс DamageCalculator extends Frame { Строковый результат = новый String(); \t public static void main (String [] args) { result = actionPerformed(); System.out.print (результат); } } Ugh, извините, не понимали, что форматирование отличается для комментариев. – TommyWhom