Вопрос о Swing Panel - PullRequest
       3

Вопрос о Swing Panel

0 голосов
/ 15 апреля 2010

Хорошо, так что я весь день тяну свои волосы. Я не могу заставить свои панели изменить размер. Я добавляю панель к чему угодно ... рамке, панели содержимого, и она не .. "заставляет" setBounds по какой-то странной причине

Container pane = window.getContentPane();
JPanel calendarPanel = new JPanel(); 
pane.add(calendarPanel); 
calendarPanel.setBounds(0,0, 320, 335); 

обратите внимание, что окно имеет JFrame. Любые предложения по выбору размера панели будут оценены!

Ответы [ 2 ]

2 голосов
/ 15 апреля 2010

Если вы еще этого не сделали, похоже, вам нужно взглянуть на менеджеры по расположению . Некоторые менеджеры компоновки соблюдают запрошенные или предпочтительные размеры компонентов, другие - нет.

По умолчанию JFrame использует BorderLayout в качестве менеджера раскладки. Когда вы добавляете панель календаря выше без указания ограничений, предполагается, что вы хотите, чтобы панель была центрирована. Все, что находится в центре BorderLayout, занимает все доступное пространство, независимо от того, какие границы компонента вы установили.

Для немедленного решения вашей проблемы установите менеджер макета на null:

Container pane = window.getContentPane();
pane.setLayout( null );
1 голос
/ 15 апреля 2010

Вы установили макет родительского компонента? Я думаю, что FlowLayout оставляет панель в его естественном размере.

component.setLayout(new java.awt.FlowLayout());

РЕДАКТИРОВАТЬ: см. Сообщение Эша

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...