Подтвердить что ты не робот

JPanel против JFrame в Java

Я изучаю Java gui. Способ, которым я научился создавать окно, - наследовать или расширять класс JFrame, и хорошо его использовать, поскольку JFrame содержит все свойства окна. Теперь, если я хочу добавить что-то в это окно, мне нужно использовать метод add(). Но сегодня я наткнулся на JPanel, который также создает окна, и мы можем добавить материал jpanelObjec.add().

В чем разница между этими двумя методами? Связаны ли они?

4b9b3361

Ответ 1

Не следует расширять класс JFrame без необходимости (только если вы добавляете дополнительные функции в класс JFrame)

JFrame

JFrame extends Component и Container.

Это контейнер верхнего уровня, используемый для представления минимальных требований к окну. Это включает в себя Border s, resizability (является ли размер JFrame resizeable?), Панель заголовка, элементы управления (минимизация/максимизация разрешена?) И обработчики событий для различных Event, таких как windowClose, windowOpened и т.д.

JPanel

JPanel extends Component, Container и JComponent

Это общий класс, используемый для группировки других Component вместе.

  • Это полезно при работе с LayoutManager например. GridLayout f.i добавление компонентов в разные JPanel, которые затем будут добавлены в JFrame для создания gui. Он будет более управляемым с точки зрения Layout и повторного использования.

  • Это также полезно при рисовании/рисовании в Swing, вы бы переопределили paintComponent(..) и, конечно, получили полную радость двойной буферизации.

Графический интерфейс Swing не может существовать без контейнера верхнего уровня (JWindow, Window, JFrame Frame или Applet), тогда как он может существовать без JPanel s.

Ответ 2

JFrame - это окно; он может иметь один или несколько экземпляров JPanel внутри него. JPanel - это не окно.

Вам нужен учебник Swing:

http://docs.oracle.com/javase/tutorial/uiswing/

Ответ 3

Я думаю, что мы можем только расширить класс, если мы собираемся сделать более конкретный класс суперкласса. Вы можете создать экземпляр Frame, например JFrame frame= new Frame(); и вы можете добавить такие объекты, как frame.getContentPane.add(widget) Итак, теперь давайте взглянем на разницу между Frame и JPanel

JFrame - имеет окна с некоторыми обычными вещами. Используется для представления материала, которое должно иметь окно. Это включает в себя границы (resizeable y/n?), Заголовок (имя приложения или другое сообщение), элементы управления (минимизация/максимизация разрешено?) И обработчики событий для различных системных событий, таких как "закрытие окна" (разрешение приложения еще не завершено?). JFrame - это окно, обычно используемое для автономных приложений, таких как окно предупреждения или окно уведомлений, которое вы обычно видите на экране. Он использует метод прослушивателя Windows, который выполняется всякий раз, когда вы закрываете, открываете, увеличиваете, сворачиваете или активируете окно.

JPanel - JPanel фактически служит контейнером общего назначения. Здесь обычно ставятся более сложные или большие операции. Вы можете поместить много операций внутри одной панели. JPanel является подклассом JComponent, а JComponent является подклассом Container, поэтому JPanel также является контейнером. Существует так много методов, которые можно использовать для JPanel, которые он унаследовал от своих суперклассов. Доступность, выравнивание и наблюдатель изображений - вот некоторые из его примеров. В JPanel вы также можете поместить поля, метки, кнопки, флажки и даже изображения и многие другие функции. Он просто представляет собой область, где вы можете поместить визуальные эффекты и элементы управления.