Когда вы используете диспетчеры компоновки (например, GridLayout
), тогда вызовы setSize()
обычно не работают, потому что диспетчер компоновки в конечном итоге решает, как определить размер и поместить каждый компонент в контейнер.
Что вы можете сделать, это позвонить setPreferredSize()
, setMaximumSize()
и / или setMinimumSize()
. В зависимости от используемого менеджера макетов один или несколько из этих запросов (потому что это действительно так) будут выполнены. Когда вы вызываете frame.pack()
, он пытается изменить размер всего содержимого контейнера (и его подконтейнеров) до их предпочтительных размеров.
Итак, в вашем случае, вызов myButton.setPreferredSize (10, 10);
, вероятно, будет работать. Однако он все равно будет изменен, если контейнер изменит размер. Если вы не хотите этого, я могу опубликовать и другие решения.