Переключение между экранами в Java Swing

3

У меня было большое приложение для моего клиента в Android. Новый проект - создать одно и то же приложение для ПК на Java. Поэтому я начал развиваться с использованием качелей. При создании в Android я использую классы с действиями, имеющими представления контента, и я могу переключаться между действиями. В java я создал несколько классов, расширяющих JFrame, и я хочу переключаться между ними. Каков правильный путь к этому?

:

new_class.setVisible(true);
old_class.setVisible(false);

правильный путь?

Теги:
swing
jpanel
jframe
layout-manager

2 ответа

8
Лучший ответ

Общий подход с использованием Swing состоял бы в том, чтобы либо объединить все экраны элементов GUI в одном контейнере верхнего уровня с использованием соответствующей стратегии (как правило, CardLayout, но черт находится в деталях). В этом графическом интерфейсе показаны другие параметры (JSplitPane и вложенные макеты):

Изображение 174551

См. также этот ответ для многих других альтернатив.


Для любых других функций, которые логически были бы в другом контейнере, используйте (возможно) модальное диалоговое окно или JOptionPane. НАПРИМЕР. a выведенный из основного фрейма:

Изображение 174551


Еще одна вещь, которую следует учитывать, - это то, что Swing (с настольным монитором) позволяет нам предлагать пользователю более богатый набор компонентов. Например, серфинг вокруг файловой системы SD SD-карты обычно достигается путем использования одного списка для каждого каталога и либо изменения содержимого списка или представления при вводе нового каталога. В Swing вы можете использовать для этого один JTree. Таким образом, гораздо меньше потребностей в "разных экранах" в наборе инструментов GUI для настольных ПК, более чем один, предназначенный для использования на вкладке или телефоне.

Вот дерево, используемое в файловом браузере.

Изображение 174551

  • 1
    CardLayout, but the devil is in the details ???, я не вижу ничего существенного по сравнению с добавлением / удалением JPanels на лету +1
  • 1
    @mKorbel Извините, я никогда не думал о «добавить / удалить», а просто о всех других возможностях (из которых около десятка). Вариант использования действительно (кричит) CardLayout хотя, я дам вам это.
0

Правильный способ - создать экземпляры из этих JFrames и установить его видимость.

 new Fram1().setVisible(true);

 new Fram2().setVisible(true);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню