2015-01-19 3 views
2

enter image description here Я использую GridLayout, и все мои панели имеют одинаковый размер, как я могу изменить их размер?Использование GridLayout - как установить размер JPanel?

Я пробовал все функции getPreferred/Minimum/MaximumSize, что делает это, и ничего. Я все еще хочу остаться с GridLayout Любые предложения?

+0

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

+0

'GridLayout' не самый лучший выбор, но также помните, что компонент предоставляет подсказки по размеру API-интерфейса менеджера компоновки через' getPreferred/Minimum/MaximumSize' – MadProgrammer

+1

[здесь] (http://stackoverflow.com/questions/4699892/ how-to-set-the-component-size-with-gridlayout-is-there-a-better-way) – Dando18

ответ

2

Так что мне удалось разбить всю часть выше на мою первую JPanel, которая расположена на СЕВЕР.
Затем, JPanel с кнопкой я сделал то же самое, чтобы быть расположенным SOUTH.
Итак, прокрученная JLabel теперь находится в ЦЕНТРЕ, что позволяет ему быть гибким.

JPanel mainPanel1 = new JPanel(new GridLayout(6,1)); 
    mainPanel1.add(titleLabel); 
    mainPanel1.add(participantPanel); 
    mainPanel1.add(swimPanel); 
    mainPanel1.add(ridePanel); 
    mainPanel1.add(runPanel); 
    mainPanel1.add(categoriesPanel); 

    JPanel mainPanel2 = new JPanel(new GridLayout(1,1));   
    mainPanel2.add(listPanel); 

    JPanel mainPanel3 = new JPanel(new GridLayout(1,1)); 
    mainPanel3.add(buttonsPanel); 

    this.getContentPane().add(mainPanel1, BorderLayout.NORTH); 
    this.getContentPane().add(mainPanel2, BorderLayout.CENTER); 
    this.getContentPane().add(mainPanel3, BorderLayout.SOUTH); 
5

По самой своей природе все компоненты, принадлежащие GridLayout, будут иметь одинаковый размер. Если вы хотите, чтобы они были разных размеров,

  1. Вы можете использовать другую раскладку, например, GridBagLayout или MigLayout или
  2. Используйте GridLayout удерживать же размера JPanels, которые действуют как контейнеры для других компонентов. Внутренние компоненты, конечно, могут быть разных размеров. Например: шахматная доска, в которой хранятся шахматные ячейки в GridLayout, но которая позволяет каждой ячейке удерживать шахматный кусок, который имеет разные размеры.

Если это не ответит на ваш вопрос, пожалуйста, уточните свой вопрос.

+2

@RoeyGolzarpoor Этот ответ по-прежнему применяется. Все ячейки будут одинакового размера, если вы не используете несколько слоев менеджеров макета, а затем вы можете изменять размеры компонентов внутри ячеек – Dando18

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