java Button setsize无效原因?

import javax.swing.*;

import java.awt.Color;
import java.awt.event.*;

public class OODemo implements ActionListener{
JButton button;
public static void main(String args[]){
OODemo demo=new OODemo();
demo.go();
}
public void go(){
JFrame frame=new JFrame();
button=new JButton("trust me");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//会在windows关闭是结束程序   
    frame.getContentPane().add(button);
    frame.setSize(300,500);
    frame.setVisible(true);
    button.setSize(20, 300);//**实际运行这里怎么改参数button大小都不改变**
    button.setBackground(Color.blue);
    button.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    button.setText("I've been clicked!");
}

}

 因为布局管理器的原因,默认是BorderLayout,撑满全屏的。
 增加frame.setLayout(null);

button.setPreferredSize(new Dimension(100, 100));

这个试试。

setPreferredSize可以解决这个问题,如果超过了该大小最好设置最小和最大的size.