Передавайте ссылки, чтобы классы могли общаться друг с другом, и не только с этим, но и с правильным активным экземпляром класса другого типа.Например, вы могли бы предоставить FlightManager поле FlightSimPane:
class FightManager {
private FightSimPane fightSimPane;
// and fill it in the constructor:
public FightManager(FightSimPane fightSimPane) {
this.fightSimPane = fightSimPane;
}
Тогда вы будете иметь дело с фактическим визуализированным объектом графического интерфейса FightSimPane.
Обратите внимание, что вам придется позаботиться опередайте правильный экземпляр:
public class FightSimPane extends JPanel {
FightManager FightManager = new FightManager(this);
Затем вы можете вызвать открытые методы FightSimPane в классе FightManager:
public void runTheFight() {
System.out.println("Starting Threads");
LeftChampThread.start();
RightChampThread.start();
while ((LeftChamp.getHealth() > 0) && (RightChamp.getHealth() > 0)) {
if (RightChamp.isReadyToAttack()) {
LeftChamp.setHealth(LeftChamp.getHealth() - RightChamp.getAD());
RightChamp.setNotReady();
System.out.println("Setting Left Champion test to"
+ Integer.toString(LeftChamp.getHealth()));
// !!! **** added this *************
fightSimPane.setRightChampionLabel("Setting Left Champion test to"
+ Integer.toString(LeftChamp.getHealth()));
}
РЕДАКТИРОВАТЬ 1
Я вижу здесь еще одну потенциально серьезную и не связанную проблему:
while ((LeftChamp.getHealth() > 0) && (RightChamp.getHealth() > 0)) {
//.........
}
Этот код, кажется, вызывается в главном потоке Swing, EDT и его природа (хотя (true)) предполагает, что онимеет очень хорошие шансы заблокировать EDT, в результате чего обработка и обновление графики вашего Swing GUI и все пользовательские взаимодействия останавливаются.Вам может понадобиться использовать Swing Timer для этого или фоновый поток, чтобы освободить EDT для выполнения необходимой работы.