Я больше привык к процедурному программированию, и то, что я сделал, в основном работает, но когда я смотрю на него, я думаю, что он не может быть очень эффективным, и должен быть гораздо лучший способ сделать то же самое. Может ли кто-нибудь показать мне, что это такое? В корне этого можно загрузить различные виды из main.java
и избавиться от них на основе содержимого базы данных.Загрузка различных представлений на Java в зависимости от переменных из базы данных?
Я создаю приложение базы данных с интерфейсом Java, используя JDBC. Я хочу иметь возможность загружать 3 разных графических интерфейса для 3-х разных пользователей, в зависимости от того, какой из них входит в систему. Мой первоначальный удар в этом заключается в создании класса Java-компонента для каждой таблицы в базе данных и соответствующих классов диспетчера для взаимодействия с базой данных. В конце концов я загружаю для них окно входа в систему, чтобы попытаться получить доступ к базе данных. Когда пользователь вводит правильные данные для входа, они сохраняются в классе Singleton с именем Session.java
для справки, когда они используют программу, поэтому мне не нужно возвращаться в базу данных, чтобы проверить их информацию. Класс Singleton затем используется для определения соответствующего интерфейса для загрузки для них. Я делал это из Main.java так:
LoginScreen login = new LoginScreen();
JohnsView john = new JohnsView();
MarysView mary = new MarysView();
PaulsView paul = new PaulsView();
login.setVisible(true);
login.setLocationRelativeTo(null);
//while the user has not completed login hide their database interface screen
while (!Session.isLoginSucessful()) {
john.setVisible(false);
mary.setVisible(false);
paul.setVisible(false);
}
, когда пользователь вводит свои данные для входа через графический интерфейс я проверить, если их имя пользователя и пароль совпадает с записью в базе данных. Если это не я установить переменные в классе Singleton под названием Session.java
как это:
Session.setTheUserID(user.getIduser());
Session.setTheUserName(user.getUserName());
Session.setTheUserPassword(user.getPassword());
Session.setTheUserLevel(user.getUserLevel());
Session.setTheUserStaffID(user.getStaffID());
Session.setLoginSucessful(true);
затем обратно в main.java
я использую переключатель заявление .dispose()
из ненужных взглядов и сделать соответствующий один видно, как это:
//dispose of login once it's finished with
login.dispose();
//get the user 'level (1,2 or 3) from the singleton class...
int usrLev = Session.getTheUserLevel();
//check their level with the switch statement for the appropriate view to load
switch(usrLev) {
case 1:
john.setVisible(true);
mary.dispose();
peter.dispose();
break;
case 2:
mary.setVisible(true);
john.dispose();
peter.dispose();
break;
case 3:
peter.setVisible(true);
mary.dispose();
peter.dispose();
break;
default:
break;
}
Я знаю, что я мог бы подойти к этой проблеме по-другому и поместить окно входа в большую Jframe и манипулировать содержимым Jframe на основе того, кто входит в систему. Я рассмотрел некоторые примеры этого в ответ на другие вопросы здесь, но это не достигло бы того, чего я хочу. Я хочу иметь возможность загружать разные представления из Main в зависимости от переменных, полученных из базы данных. Нужен ли мне какой-то класс менеджера представлений, который вызывается из основного? Я пробовал это несколько раз, но в конечном итоге удаляю его, потому что это не имеет смысла, когда я пытаюсь. Я не могу понять это в java. Любая помощь в понимании этого и ответа на него приветствуется.