Как отобразить панель в другой панели?

Я пишу простую графическую программу на Java.

Итак, у меня 3 класса.

  1. Первый класс - это графический интерфейс с расширением JFrame, он загружает строку меню и панель (класс рисования).

  2. Второй класс — это класс рисования, он расширяет JPanel и имеет простые графические команды.

  3. Третий класс — это класс анимации, он отображает анимацию. Он также расширяет JPanel.

Итак, мой вопрос заключается в следующем: как мне отобразить класс анимации на панели класса GUI. Я хочу, чтобы он отображался вместо класса рисования. Когда я пытаюсь поместить его туда, рядом с панелью класса рисования отображается крошечное поле. Я не очень хорошо разбираюсь в рамах и панелях. Заранее большое спасибо!


person gerky    schedule 27.02.2011    source источник


Ответы (3)


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

Если вы хотите изменить макет на что-то более полезное, есть много вариантов; Популярны макеты BorderLayout, GridLayout, GridBag. Лично я использую MigLayout, очень мощную внешнюю библиотеку :).

Что касается размера, попробуйте вручную установить размер с помощью setSize(w, h) или setPreferredSize(w, h).

person Trasvi    schedule 27.02.2011

Вы можете написать

GUIFrame.remove(drawingPanel);
GUIFrame.add(animationPanel);
GUIFrame.pack();

Однако поведение может отличаться, если к вашему GUIFrame добавлены другие компоненты. Трудно вам помочь именно потому, что вы не разместили SSCCE.

person Swaranga Sarma    schedule 27.02.2011

Итак, мой вопрос заключается в следующем: как мне отобразить класс анимации на панели класса GUI. Я хочу, чтобы он отображался вместо класса рисования.

Используйте макет карточки.

person camickr    schedule 27.02.2011