Создайте экземпляр класса внутри вложенного класса и сделайте его доступным для остальных классов - PullRequest
0 голосов
/ 17 октября 2019

Я пишу приложение, которое должно поддерживать от 50 до 100 пользователей. Основная цель приложений - отслеживать прогресс студентов на протяжении ряда уровней. Каждый уровень имеет 10 - 20 предметов для завершения. Я создал несколько логических массивов внутри информационного класса для отслеживания того, что было передано вместе с несколькими методами для манипулирования и изменения этих массивов. Я также написал графический интерфейс, чтобы помочь в отслеживании.

В настоящее время, когда я создаю нового пользователя, приложение создает текстовый файл с именем пользователя и записывает в него информационный класс по умолчанию (для всех массивов установлено значение false).

I'mпытаюсь создать экземпляр моего информационного класса, читая из указанного файла пользователя. Затем я буду использовать этот экземпляр для изменения / манипулирования информацией указанного пользователя, а затем запишу ее обратно в файл после нажатия кнопки сохранения.

Основная проблема, с которой я столкнулся, заключается в том, что при создании внутри ActionBistener моего JButton, экземпляр моего информационного класса недоступен для остальной части класса.

//java.awt Choice for displaying all enrolled students
studentList = (Choice) readObjectFromFile("src/passOffs/Objects/AllStudentsList.txt");

JButton btnGetInfo = new JButton("Edit Student Info");
btnGetInfo.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
          levelInfo lf = (levelInfo) readObjectFromFile("src/passOffs/Students/" + studentList.getSelectedItem() + ".txt");
    }
});
allLevels = new String[lf.getTotalItems()];
allLevels = lf.getLevelItems();

Есть ли способ сделать его доступным для остальной части класса? Или есть другой способ для программы генерировать указанный информационный класс при нажатии кнопки?

Вот мой метод readObjectFromFile.

private Object readObjectFromFile(String source) {
    try { 
            FileInputStream fileIn = new FileInputStream(source);
            ObjectInputStream objectIn = new ObjectInputStream(fileIn);

            Object obj = objectIn.readObject();

            objectIn.close();
            return obj;

        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
}
...