Макет сетки не правильно выровнен - PullRequest
0 голосов
/ 08 января 2019

Я работаю над пасьянсом с Java и Swing, и у меня возникла проблема с раздражением. У меня есть панель для игры с миграцией, которая, кажется, работает нормально, но внутри нее есть еще 7 панелей с кучами карт, каждая из которых имеет решетку, но, как вы можете видеть на следующем изображении, стопки выровнены неправильно:

The issue in cuestion

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

Код, на котором созданы подпанели, находится здесь: https://github.com/ccokee/Solitarios/blob/master/src/pClasico.java#L166

И код подпанелей здесь: https://github.com/ccokee/Solitarios/blob/master/src/pMontonC.java#L33

Может кто-нибудь помочь мне решить эту проблему? Я долго возился с этим, но безуспешно: (

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Мне кажется, я нашел проблему в коде.

В классе pClassico.java попробуйте изменить строку 296:

interior.add(MontonesJuego[i], "cell " + (i+4) + " 3");

с этим:

interior.add(MontonesJuego[i], "cell " + (i+5) + " 3");

Вот что я имею в своей среде: Solitarios with aligned piles.

Надеюсь, это поможет!

0 голосов
/ 08 января 2019

По умолчанию GridBagLayout будет центрировать компоненты по вертикали (и по горизонтали) на панели, если только один из компонентов не имеет значение weighty, не равное 0.

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

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

Что-то вроде:

Box box = Box.createVerticalBox();
box.add( card1 );
box.add( card2 );
...
box.add( Box.createVerticalGlue() );

Другим вариантом может быть использование Схема перекрытия . Этот менеджер компоновки позволяет размещать компоненты друг над другом.

...