Как я могу убедиться, что строковая переменная установлена ​​до переключения панели? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу убедиться, что строковая переменная установлена ​​до переключения панели? [закрыто]

Сообщение Anonymous »

Я хочу создать игру-викторину, используя Java. Я использовал панели для отображения разных «этапов» теста (больше похоже на разные интерфейсы) и использую cardLayout для навигации по этим панелям (каждая панель находится в отдельном файле).
У меня есть панель под названием «Панель тем», в которой, по сути, есть несколько кнопок с темами, которые можно выбрать. Нажатие одной из этих кнопок приводит к переходу на другую панель ModePanel, на которой есть две кнопки: «Практика» и «Тест». При нажатии каждой из этих кнопок откроется соответствующая панель, и, наконец, начнется тест.
Дело в том, что я хочу, чтобы все вопросы и варианты были импортированы из файла .txt< /код> файл. Это работало бы нормально, если бы я использовал только один .txt, но я создал .txt для каждого из предметов, которые игрок может выбирать, и в зависимости от того, какая кнопка нажата в ObjectsPanel, я хочу, чтобы вопросы импортировались из соответствующего файла .txt .
Я подумал о создании общего класса, к которому мог бы получить доступ любой другой класс. , который выглядит следующим образом:

Код: Выделить всё

public class SharedData {
public String subjecttt;

public String getSubjectChosen() {
return subjecttt;
}

public void setSubjectChosen(String subject) {
subjecttt = subject;
}
}
Когда я добавляю новую панель в MainPanel, я использую:

Код: Выделить всё

mainPanel.add(new StartPanel(this, sharedData), "StartPanel");
И когда нажимается одна из кнопок на панели «Темы», происходит следующее:

Код: Выделить всё

b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
sharedData.setSubjectChosen("C:\\Users\\Utilizator\\Documents\\anatomy.txt");
frame.switchToPanel("ModePanel");
}
});
Проблема в том, что когда он достигает PracticePanel, переменнаяsharedData имеет значение null.

Код: Выделить всё

PracticeOption(MainFrame frame, SharedData sharedData) {
System.out.println(sharedData);
}
В этом фрагменте кода будет отображаться значение «null».
Я реализовал множество отладочных отпечатков и обнаружил, что SharedData сам по себе правильно передается в ModePanel (панель, которая находится после subjectsPanel и прямо перед PracticePanel или TestPanel), но значение subjecttt не является сохраняется или распространяется, когда панель переключается на PracticeOption или TestOption. И я не понимаю, в чем проблема, поскольку я убедился, что один и тот же экземпляр SharedData передается последовательно при инициализации и переключении панелей.

Подробнее здесь: https://stackoverflow.com/questions/792 ... nel-switch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»