在 Java Swing 開發中,許多初學者會發現對 JButton 呼叫 setSize() 方法後,按鈕大小並沒有發生變化。無論傳入什麼參數,按鈕始終佔滿整個視窗或容器。
這是因為 Swing 容器預設使用 BorderLayout 佈局管理器。在 BorderLayout 中,加入到 CENTER 區域的元件會自動被拉伸以填滿可用空間,因此手動設定的尺寸會被佈局管理器覆蓋。
若確實需要精確控制元件大小,可將容器的佈局管理器設為 null(絕對定位),但需自行管理所有元件的位置與大小:
frame.setLayout(null); // 取消預設佈局管理器
button.setBounds(x, y, width, height); // 同時設定位置與大小
建議: 實際專案中推薦使用合適的佈局管理器(如 GridBagLayout、BoxLayout 或巢狀面板)來實現彈性介面,避免使用絕對定位。