Передача информации между панелями в разгаре? - PullRequest
1 голос
/ 08 января 2012

Я использую свинг в Java, чтобы сделать тест для моей курсовой работы.Я сделал свой основной класс, фрейм с вкладками, который содержит отдельные jpanels в качестве вкладок, например страницу входа, и я использую sqlite для получения моих данных.Однако я изо всех сил пытаюсь понять, как я могу общаться между, скажем, моим именем входа jpanel и моим основным классом.

mainJFrame.addWindowListener(new WindowAdapter() {
        public void windowActivated(WindowEvent arg0) {
            LoginPanel loginEntry = new LoginPanel();
            welcomePanel.add(loginEntry);
            welcomePanel.setBounds(0,0,728,390);

// Поэтому здесь я хотел бы получить оператор if, чтобы при успешном входе в систему добавлялись другие вкладки иможно увидеть.Но недоступны, если вы не вошли в систему.

                tabbedPane.addTab("Quick Guide", null, quickGuidePanel, null);
                tabbedPane.addTab("Examples", null, examplePanel, null);
                tabbedPane.addTab("Run Quiz", null, runQuizPanel, null);
                tabbedPane.addTab("Exams", null, examPanel, null);
                tabbedPane.addTab("View Performance", null, viewPerfPanel, null);
                tabbedPane.addTab("Settings", null, settingsPanel, null);

        }
    });

Я попытался создать метод получения и установки и попытался получить метод GetSuccessfulLogin (), но это не сработало :(

спасибо

Ответы [ 4 ]

1 голос
/ 08 января 2012

Хороший способ заполнить вашу регистрационную информацию в приложении - это шаблон Singleton.Например:

public class AuthService {
   private static AuthService myInstance;

   private User currentUser;
   ...

   private AuthService() {
       // Constructor is private. The Object can only be instanciated by getInstance()
   }

   public static AuthService getInstance() {
      if (myInstance == null) {
         myInstance = new AuthService();
      }

      return myInstance;
   }

   public User getCurrentUser()
   ...


   public void setLoggedInUser(User user)
   ...

   public User login(String userName, String password)
   ...

}

С помощью статического метода getInstance () вы можете получить экземпляр одного и того же объекта везде в вашем Appliaction без необходимости переносить объект через все конструкции или методы.Вы можете хранить там все свои Данные, связанные с аутентификацией, и даже некоторые Методы, которые выполняют вход в систему.GetCurrentUser () может вернуть ноль, если не существует успешных вошедших в систему пользователей.

Если возможно войти в систему более чем с одного клиента одновременно, вам потребуется хранить разные пользовательские данные для разных сеансов в вашем AuthService.

0 голосов
/ 08 января 2012

Для проверки успешности входа вы можете создать статическую переменную, которая будет содержать логическое значение, если текущий пользователь успешно вошел в систему. Статический означает, что он доступен во всей программе.

static Boolean isLoggedIn

Вы, вероятно, видите, что вам нужно где-то установить эту переменную и где-то прочитать, чтобы разрешить «общение»

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

Как отметил @Adel, вы можете связать основной фрейм с панелью входа в систему.Преимущество этого заключается в том, что вы держите его более плотно, но это также может вызвать проблему: если у вас есть больше вкладок, которые вы хотите связать друг с другом, вам необходимо сообщить всем панелям, какие панели есть.

0 голосов
/ 08 января 2012

вы можете создать статический метод.удерживайте информацию для входа !!

0 голосов
/ 08 января 2012

Изменить строку:

LoginPanel loginEntry = new LoginPanel();

до

LoginPanel loginEntry = new LoginPanel(MainJFrame.this);

и внутри функции входа в систему:

if (success) {
    //add the TabbedPane
    mainJFrame.add(tabbedPane);
} else {
    // do not add the TabbePane
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...