2016-03-19 4 views
2

Какая разница между:Почему я должен использовать JPanel?

public class Test { 

    public static void main(String[] args) { 
     JButton button= new JButton("1"); 
     button.setVisible(true); 
     JPanel panel= new JPanel(); 
     panel.add(button); 
     panel.setVisible(true); 
     JFrame frame = new JFrame(); 
     frame.add(panel); 
     frame.setVisible(true); 
     frame.pack(); 

    } 
} 

и

public class Test { 

    public static void main(String[] args) { 
     JButton button= new JButton("1"); 
     button.setVisible(true); 
     JFrame frame = new JFrame(); 
     frame.add(button); 
     frame.setVisible(true); 
     frame.pack(); 

    } 
} 

Я знаю, что JPanel является контейнером для компонентов GUI, но я действительно не вижу полезность использования его. Конечно, я очень не прав, но я начинаю с Swing, поэтому ... Почему я должен использовать JPanel? В чем же цель?

ответ

1

Почему я должен использовать JPanel?

Вы используете JPanel для одного или более из следующих преимуществ:

  • Для компонентов группы вместе.
  • Чтобы лучше организовать ваши компоненты.
  • Чтобы мы могли использовать несколько макетов и объединить их эффекты. (Например, GridLayout для цифровой клавиатуры, CardLayout для панели дисплея, где вы можете переключать чертежи).
  • Чтобы разбить большую проблему на подзадачи. Поэтому вместо того, чтобы внедрять все в один большой фрейм, вы можете сконцентрироваться на реализации свойств каждой отдельной панели (например, макета, размерности, фонового изображения, цвета фона ..etc)
  • Для повторного использования, если у вас есть настроенные панели. Общая панель может использоваться различными классами.
  • Для легкой отладки, так как вы можете тестировать каждую панель отдельно.
  • Для масштабируемости.
  • Для ремонтопригодности.

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

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

+0

@Vinicius Вы можете взглянуть на мое решение. – user3437460

2

Целью является объединение компонентов вместе.

Посмотрите на эту веб-страницу, например. Вы можете представить себе центральную панель с вопросом и ответами, выложенными вертикально, правую панель, содержащую еще несколько панелей: одну для блога, одну для объявления работы, одну для связанных вопросов и, наконец, южную панель для нижнего колонтитула.

Панель нижнего колонтитула может быть повторно использована на других страницах, кроме страниц вопросов.

Макет страницы в целом легче понять и реализовать, если вы разделите ее на независимые панели.

+0

Посмотрите на эту веб-страницу, например. - Хммм, который пожалуйста :-) – mKorbel

+0

Этот. Тот, который вы смотрите прямо сейчас, читая этот комментарий. –

+0

hmmm interesting ..., missing this point – mKorbel

3

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

2

В JFrame можно разместить несколько JPanel. JPanel - это конайнер для вас других компонентов и может группировать его по логическим функциям.

2

Вы можете использовать JPanel для создания многоразового строительного блока вашего пользовательского интерфейса и поддержания единой точки обслуживания для всех его экземпляров. Предположим, вы создали бы JFrame, содержащий представление о различии для двух текстов. Левый и правый вид позволяют говорить о идентичных близнецах. Проще создать панель дважды и добавить эти две панели на фрейм вместо того, чтобы сразу добавить все последующие компоненты в ваш фрейм.

Всякий раз, когда вам нужно изменить вид, допустим, вы хотите добавить еще одну кнопку или что-то еще, что вы можете сделать это на своей панели, и то и другое - левое и правое представление немедленно будут содержать изменения.

2

Объединение определенных компонентов вместе, чтобы вы могли манипулировать группами из них в циклах. Возможно, чтобы проверить, соответствуют ли все текстовые поля в регионе определенному требованию или полностью уничтожить их.

Смежные вопросы