Размер панели Java Swing - PullRequest
       7

Размер панели Java Swing

1 голос
/ 24 января 2012

Здравствуйте, я изучаю Java Swing для создания шахматной игры, чтобы попрактиковаться в моих навыках программирования на Java.

Я добавил JPanel к востоку от JFrame с помощью BorderLayout и использовал метод setPrefferedSize(new Dimension(x,y)) для установки ширины и высоты.

После этого я создал 4 JPanel и добавил их с BoxLayout на ранее созданную панель.

Я попытался установить размер 4 панелей с помощью setSize(x,y) и setPreferredSize(new Dimension(x,y)), но это не сработало, 4 панели автоматически изменили размер в соответствии с основным JPanel и после добавления JLabel на одну из них размером из этого увеличился автоматически.

Это мой код:

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel a = new JPanel(); 
a.setPreferredSize(new Dimension(50, 50)); //this dosent work
a.add(min);
a.setBackground(Color.red);
this.add;

JPanel b = new JPanel();   
b.setBackground(Color.blue);
this.add(b);

JPanel c = new JPanel(); 

this.add(c);

JPanel d = new JPanel();
d.setBackground(Color.black);
this.add(d);

Как изменить размер каждой из этих панелей?

1 Ответ

3 голосов
/ 24 января 2012

BoxLayout лучше всего подходит для размещения компонентов с различными размерами вдоль одной оси. Из Javadocs:

"BoxLayout пытается расположить компоненты по их предпочтительной ширине (для горизонтального расположения) или высоте (для вертикального размещения)."

Идея состоит в том, что они могут иметь разную высоту (для горизонтального расположения), и это займет максимальную высоту. И они определенно могут иметь разную ширину. Кроме того, BoxLayout работает с некоторыми, например, «интересными» компонентами-заполнителями, такими как Box.createHorizontalGlue(). Они на самом деле весьма полезны для гибких макетов с изменяемыми размерами, когда вы освоите их. Но, в целом, BoxLayout - это гибкая, изменяемая структура элементов с различными размерами.

Для более простых случаев, особенно если вы хотите, чтобы и предпочитали ширину и предпочтительную высоту, которые были "соблюдены", используйте GridLayout, как и все остальные.

...