Как изменить размер JPanels индивидуально?

1

Я пытаюсь создать простой интерфейс gui. Рамка состоит из главной панели, которая содержит еще четыре панели "Детали персонала", "Детали задания" "Фото" и кнопки. Вывод выглядит следующим образом:

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

Я использовал gridLayout для всех панелей, кроме "панели кнопок", которая имеет borderLayout.

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

Вот код для панели "фото" и панели "кнопка". Обе панели теперь имеют компоновку потока.

        photoPanel.setPreferredSize(new Dimension(300,70));
        photoPanel.add(browsebx);
        photoPanel.add(browseBtn);


        btnPanel.setPreferredSize(new Dimension(300,70));
        btnPanel.add(addBtn);
        btnPanel.add(editBtn);
        btnPanel.add(deleteBtn);
        btnPanel.add(cancelBtn);
  • 0
    почему вы остановились, чтобы опубликовать SSCCE / MCVE
  • 0
    код слишком длинный ... я также не хотел предоставлять только часть кода, так как он не будет компилируемым
Показать ещё 3 комментария
Теги:
user-interface
swing

2 ответа

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

На вашей основной панели используется GridLayout, что означает, что все четыре панели будут одинакового размера. Не используйте GridLayout.

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

Прочтите раздел из руководства Swing о том, как использовать GridBagLayout для получения дополнительной информации и примеров.

Помните, что каждая из 4 дочерних панелей может при необходимости использовать другой менеджер компоновки. Например, вы, вероятно, захотите использовать FlowLayout для панели кнопок.

  • 0
    Большое спасибо ... Я использовал сетку для простоты, но это дает дополнительное пространство
1

вы можете использовать это.

jPanel.setPreferredSize(new Dimension(x, y));

jPanel.setMaximumSize(new Dimension(x, y));  
jPanel.setMinimumSize(new Dimension(x, y));
  • 0
    Должен ли я использовать все три?
  • 0
    Нет, просто используйте первый. если это не решит, используйте их все.
Показать ещё 5 комментариев

Ещё вопросы

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