Изменить размер CardLayout в Swing - PullRequest
0 голосов
/ 30 декабря 2011

Я не могу выровнять сеточные панели в Swing из-за фиксированного размера CardLayout.

У меня есть gridPanel gpTenderTypes, для которого я использовал макет карты.

 gpTenderTypes.setLayout(new CardLayout());

При нажатии кнопки карта изменится и будет вызван класс (например, при нажатии кнопки кредитной карты будет показана кредитная карта на панели сетки и будет вызван объект Card1 ().

gpTenderTypes.add(new Cash1(), DBConstants.TENDER_TYPE_CASH);
gpTenderTypes.add(new Card1(), DBConstants.TENDER_TYPE_CREDIT_CARD);

gpTenderTypes добавлен в другую gridPanel gp2row вместе с 2 другими сеточными панелями.

gp2row.addFilledComponent(gpCustDet, 1, 1, 6, 1,GridBagConstraints.BOTH);
gp2row.addFilledComponent(gpTT, 1, 7, 1, 1, GridBagConstraints.BOTH);        
gp2row.addFilledComponent(gpButtonsPanel, 1, 8, 6, 1,GridBagConstraints.BOTH);

gp2row добавлен на экран:

this.addFilledComponent(gp2row, 2, 1, 14, 1, GridBagConstraints.BOTH);

Я понял, что размер CardLayout остается постоянным независимо от изменения его размера с помощью setSize или setPreferredSize. Изменение размеров других GridPanels (gpCustDet, gpButtonsPanel) также бесполезно.

Как мне это исправить? Спасибо!

1 Ответ

0 голосов
/ 12 января 2012

Размер CardLayout (на самом деле размер Компонента с макетом CardLayout) определяется не тем, что вы делаете с дочерними элементами этого компонента, а скорее самим компонентом и его родительским компонентом и менеджер компоновки его родителя. Без каких-либо подробностей в вашем коде мы не можем быть уверены, но я бы сначала посмотрел.

...