通常,组件放置在容器中,布局管理器决定容器中的组件的具体放置位置和大小。按钮、文本域等用户界面元素都继承于Component类,组件可以放置在面板中。
Container类继承于Component类,所以容器可以放置在另一个容器中。
每一个容器都有一个默认布局管理器,可以重新设置。
例如:
panel.setLayout(new GridLayout(4,4));
容器的add方法将组件和放置位置的方位传递给布局管理器。1、边框布局管理器(border layout manager) 它是每个JFrame的内容窗格的默认布局管理器。允许为每个组件选择一个放置位置。可以把组件放在North、South、West、Center、East。如果没有提供任何值,系统默认为Center。当容器被缩放时,边缘组件厚度不变,但是中间组件大小会变化。
例如:
frame.add(component,BorderLayout.South);
边框布局会扩展所有组件的尺寸填满可用空间。
例如:
解决问题的常用方法是使用另一个面板(panel),创建一个新的JPanel对象,然后把按钮添加进面板中。这样按钮位于面板中间,不会扩展到整个面板区域。最后,将
这个面板添加到框架中。
例如:
JPanel panel = new JPanel();
panel.add(blueButton);
frame.add(panel,BorderLayout.SOUTH);
2、网格布局
每个表格单元大小一致,当缩放窗口时,计算器按钮随之变大或变小,但是所有尺寸保持一致。网格布局对象构造器中,需指定行数和列数。添加组件,从第一行的第一列开始,
然后是第一行第二列。
panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); addButton("7"); addButton("8"); addButton("9"); addButton("/"); addButton("4"); addButton("5"); addButton("6"); addButton("*"); addButton("1"); addButton("2"); addButton("3"); addButton("-"); addButton("0"); addButton("."); addButton("="); addButton("+"); frame.add(panel,BorderLayout.CENTER);