java的几种基础的布局管理器为FlowLayout(流水布局)、BorderLayout(边界布局)、GridLayout(网格布局)、CardLayout(卡片布局),还有其他几种更复杂的布局管理器这里就不做示例了。
示例代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class layout_try extends JFrame{
public layout_try(){
setTitle("布局管理器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
//流水布局,panel类容器默认的布局管理器,组件位置会随着窗口大小移动
//new FlowLayout(FlowLayout.LEFT,10,20)参数指明组件间水平间距为10个像素,垂直间距为20个像素,每行组件向左看齐
//若不指明,默认间隔为5个像素
JButton bu_1 = new JButton("线性代数");
JButton bu_2 = new JButton("离散数学");
JButton bu_3 = new JButton("数字逻辑");
add(bu_1);
add(bu_2);
add(bu_3);
setLayout(new BorderLayout());
//边界布局,采用东西南北中五个区域放置组件
add("East",new JButton("篮球"));
add("Center",new JButton("足球"));
add("North",new Checkbox("check"));
setLayout(new GridLayout(3,4));
//网格布局,按指定行列数等分成网格,每格放一个组件
//组件默认间距为0,若要指定间距,如(4,3,5,5),即设置水平和垂直间距为5个像素
//GridBagLayout为网格包布局,升级版的GridLayout,可以安排大小不一的组件等
for(int i=1;i<=9;i++){
add(new JButton(""+i));
}
CardLayout card = new CardLayout();
setLayout(card);
//卡片布局,像一叠卡片,每张卡片代表一种不同的布局,每次只有一张在最上面显示出来
//card.next(容器名称) 显示容器中当前组件之后的一个组件,若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。
//card.first(容器名称) 显示容器中第一个组件
//card.last(容器名称) 显示容器中最后一个组件
//card.previous(容器名称) 显示容器中当前组件之前的一个组件。
Choice ch = new Choice();
JPanel jp=new JPanel();
jp.add(ch);
add(jp);
for(int i=1;i<=4;i++){
ch.add(""+i);//单独填i会报错,前面加个String类空项即可
}//之后可加事件响应实现不同卡片的切换,此处不做示例
}
public static void main(String[] s){
layout_try f = new layout_try();
f.pack();
f.setVisible(true);
}
}