源代码;此时的现象是按钮显示不全,并没有出现组件pack塞满窗口的现象,即jframe.pack();方法失效
package ui;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MySwing {
public static void main(String[] args) {
JFrame jframe=new JFrame();
JButton jbtCenter=new JButton("Center");
JButton jbtNorth=new JButton("North");
JButton jbtEast=new JButton("East");
JButton jbtWest=new JButton("West");
JButton jbtSouth=new JButton("South");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 默认是Border边界布局
// jframe.setLayout(new BorderLayout());
jframe.setLayout(new FlowLayout());
// jframe.setLayout(new GridLayout(2,2));
jframe.setLocation(100, 100);
// jframe.setSize(1000, 2000);
jframe.pack();
jframe.add(jbtCenter,"Center");
jframe.add(jbtNorth,"North");
jframe.add(jbtEast,"East");
jframe.add(jbtWest,"West");
jframe.add(jbtSouth,"South");
jframe.setVisible(true);
jbtCenter.addActionListener(new MyActionListener());
}
}
原因:pack方法放到add之前了,对add之后的元素没有起到作用;应该是先放按钮,在对按钮进行pack,请注意程序的顺序执行,放早了往往就不起作用了;正确代码如下
package ui;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MySwing {
public static void main(String[] args) {
JFrame jframe=new JFrame();
JButton jbtCenter=new JButton("Center");
JButton jbtNorth=new JButton("North");
JButton jbtEast=new JButton("East");
JButton jbtWest=new JButton("West");
JButton jbtSouth=new JButton("South");
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 默认是Border边界布局
// jframe.setLayout(new BorderLayout());
jframe.setLayout(new FlowLayout());
// jframe.setLayout(new GridLayout(2,2));
jframe.setLocation(100, 100);
// jframe.setSize(1000, 2000);
jframe.add(jbtCenter,"Center");
jframe.add(jbtNorth,"North");
jframe.add(jbtEast,"East");
jframe.add(jbtWest,"West");
jframe.add(jbtSouth,"South");
jframe.pack();
jframe.setVisible(true);
jbtCenter.addActionListener(new MyActionListener());
}
}