2012-03-07 3 views
2

У меня есть JFrame, который является контейнером верхнего уровня для окна и одним JComponent (который я реализовал), который содержится в JFrame.Java JFrame не изменяет размер

В части моей логики JComponent мне нужно изменить размер окна до определенного размера, но теперь важно, что я пытаюсь, он не сработал. Я попытался позвонить setPreferredSize и setSize на JFrame, JComponent и на Container, возвращенный с вызова getParent() на компонент.

У меня такое чувство, что это связано с тем, что я не звоню pack после изменения размера, но не могу понять, как получить доступ к JFrame из JComponent, чтобы называть пакет (я не эксперт по swing).

Спасибо

+0

'pack()' изменит размер для вас. Не называть 'pack()', если вы хотите вручную установить размер. –

ответ

3

Вы всегда можете получить окно верхнего уровня с помощью вызова метода SwingUtilities#getWindowAncestor:

Window topLevelWindow = SwingUtilities.getWindowAncestor(myComponent); 
topLevelWindow.pack(); 

переходящего в компоненте. Просто убедитесь, что вы только называете это после того, как графический интерфейс был отображен, иначе вы получите неприятное исключение NullPointerException.

+1

Это работает, спасибо. – tnecniv

+0

@tnecniv: Добро пожаловать! Рад, что это помогло! –

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