Я новичок в Java, и я хотел бы знать, какой из них лучше всего подходит для создания навигации моего приложения.
Теперь я объясню функциональность моего приложения и выбранный мной подход.
Оставляя позади все сетевые и другие детали, я сконцентрируюсь на части GUI, так как это то, для чего я здесь.
В основном мое приложение выполняет следующие действия:
- Когда вы запускаете его, вы видите экран входа в систему и 2 кнопки (Зарегистрироваться и Войти).
- Экран регистрации - это базовый экран регистрации с соответствующими компонентами.
- Если пользователь введет правильную информацию для входа в систему, ему будет представлено представление, содержащее некоторые данные.
Теперь я подумал сделать JDialog / JFrame / Frame, который будет глобальным для приложения, и когда пользователи нажимают кнопку, удаляют предыдущее содержимое и перерисовывают новые компоненты.
Фрагмент моего экрана регистрации:
private JButton signUp;
private final JDialog parent;
.....
signUp = new JButton("Sign Up");
signUp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
parent.getContentPane().removeAll();
parent.validate();
parent.pack();
Account v = new Account(parent);
v.init();
}
});
// add all the components to the parent frame
parent.add(signUp);
.....
Позвонив по номеру Account v = new Account(parent);
, я передал глобальный фрейм (в моем случае JDialog
) для "повторного заполнения" другим содержимым, используя v.init();
.
Поэтому моя идея такова: все «представления», которые мне нужны для моего приложения, должны иметь «родительское» поле (которое получает глобальный фрейм при вызове конструктора), в которое я добавляю нужные мне компоненты. Каждый раз перед вызовом метода .init()
для представления я удаляю весь предыдущий контент.
Я не уверен, что это хороший подход, так как я читал о потоках и MVC. С другой стороны, мой подход кажется очень простым, и я не уверен, стоит ли мне усложнять его многопоточностью или MVC.
Используя мой подход, мне удалось создать довольно гибкий пользовательский интерфейс, я могу "играть" со свойствами кадра (размер, фокус, включение и т. Д.) Из любого представления.
ПРИМЕЧАНИЕ. Если я не достаточно ясно понял, когда я говорю «view», я имею в виду класс, который получает поле parent
при создании и использует .init()
для добавления содержимого в родительский фрейм.
РЕДАКТИРОВАТЬ: Мне не нужен код от вас, ребята, просто простой совет. Я делаю это потому, что не хочу, чтобы при разработке приложения возникли серьезные проблемы из-за моего подхода к стилю навигации.