5

Использование нескольких JFrames: хорошая или плохая практика? [закрыто]

11

Проблема с использованием нескольких JFrame в приложении на Java

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

Сейчас я задаюсь вопросом: является ли хорошей практикой использование нескольких окон JFrame в одном приложении?

Буду признателен за мнение сообщества: какие плюсы и минусы есть у такого подхода? Есть ли у кого-то опыт работы с несколькими окнами, и как это сказывается на пользовательском опыте и управлении приложением?

5 ответ(ов)

0

Чтобы сделать JInternalFrame частью главного окна (JFrame) и сделать его невидимым, можно использовать следующий подход. Сначала добавьте JInternalFrame в основной фрейм, затем установите его видимость в false, чтобы он не отображался, но при этом оставался доступным для обработки событий. Вот пример кода для выполнения этой задачи:

JInternalFrame jInternalFrame = new JInternalFrame("My Internal Frame");
jInternalFrame.setSize(300, 150);
// Добавляем InternalFrame в главный фрейм
mainFrame.add(jInternalFrame);
// Делаем InternalFrame невидимым
jInternalFrame.setVisible(false);

Таким образом, вы можете использовать jInternalFrame для дальнейших событий и взаимодействий, несмотря на то, что он не отображается на экране.

0

Это уже некоторое время назад, как я работал со Swing, но в целом считать использование нескольких JFrame плохой практикой. Вот некоторые основные недостатки, которые приходят на ум:

  • Это более затратно: вам потребуется выделить значительно больше ресурсов для отрисовки JFrame по сравнению с другими контейнерами, такими как Dialog или JInternalFrame.
  • Непросто в использовании: Навигация по множеству связанных между собой JFrame может быть затруднена; это создаёт впечатление, что ваше приложение представляет собой набор несогласованных и плохо спроектированных приложений.
  • Использовать JInternalFrame проще: Это скорее риторический вопрос, но сейчас это гораздо проще, и другие более умные люди (или обладающие большим количеством свободного времени) уже продумали использование шаблона Desktop и JInternalFrame, поэтому я бы рекомендовал использовать именно его.
0

Определенно, это плохая практика. Одна из причин заключается в том, что это не очень «удобно для пользователя»: каждый JFrame создает новую иконку в панели задач. Управлять несколькими JFrame будет крайне сложно и утомительно.

Лично я бы использовал ОДИН JFrame для вашего типа приложения. Способы отображения множества компонентов зависят от вас, и их существует много: Canvas, JInternalFrame, CardLayout, возможно, даже JPanel.

Несколько объектов JFrame = Боль, проблемы и неприятности.

0

Я думаю, что использование нескольких JFrame не является хорошей идеей.

Вместо этого мы можем использовать несколько JPanel в одном и том же JFrame.

Также мы можем переключаться между этими JPanel, что позволяет нам отображать больше одного элемента в JFrame одновременно.

Для каждого JPanel мы можем разработать различные элементы, и все эти JPanel могут отображаться на одном JFrame, но по одному в одно время.

Чтобы переключаться между этими JPanel, можно использовать JMenuBar с JMenuItems для каждого JPanel, либо JButton для каждой JPanel.

Более одного JFrame не является хорошей практикой, но в принципе нет ничего плохого в том, чтобы использовать несколько JFrame, если это необходимо.

Тем не менее, лучше адаптировать один JFrame под разные потребности, чем иметь множество JFrame.

0

Если размеры фреймов будут одинаковыми, почему бы не создать один фрейм и передавать его как ссылку?

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь