Java навигационный подход - PullRequest
0 голосов
/ 16 марта 2012

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

Оставляя позади все сетевые и другие детали, я сконцентрируюсь на части GUI, так как это то, для чего я здесь.

В основном мое приложение выполняет следующие действия:

  1. Когда вы запускаете его, вы видите экран входа в систему и 2 кнопки (Зарегистрироваться и Войти).
  2. Экран регистрации - это базовый экран регистрации с соответствующими компонентами.
  3. Если пользователь введет правильную информацию для входа в систему, ему будет представлено представление, содержащее некоторые данные.

Теперь я подумал сделать 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() для добавления содержимого в родительский фрейм.

РЕДАКТИРОВАТЬ: Мне не нужен код от вас, ребята, просто простой совет. Я делаю это потому, что не хочу, чтобы при разработке приложения возникли серьезные проблемы из-за моего подхода к стилю навигации.

1 Ответ

1 голос
/ 16 марта 2012

Вы можете либо удалить / прочитать новое содержимое, позвонив по номеру

revalidate();
repaint();

, либо использовать CardLayout отображение текущей карты с необходимым пользовательским интерфейсом.

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