GUI的三种布局方式
程序员文章站
2022-06-08 16:32:13
...
- FlowLayout布局
- BorderLayout布局
- GridLayout布局
** FlowLayout布局:是按钮都是按在一起的, FlowLayout布局有一个参数即按钮的位置左中右**
import java.awt.*;
/**
*@author 作者 Your-Name:
*@version 创建时间:
*类说明:布局
*/
public class LiuSiBuJu {
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame("这是流式布局");
f.setSize(300,300);
// f.setLayout(null);
f.setLayout(new FlowLayout(FlowLayout.LEFT));
f.setVisible(true);
Button b1 = new Button("1");
Button b2 = new Button("2");
Button b3 = new Button("3");
f.add(b1);
f.add(b2);
f.add(b3);
}
}
如图:我们可以看到都在左边
** BorderLayout布局:可以指定按钮的位置**
import java.awt.*;
/**
*@author 作者 Your-Name:
*@version 创建时间:
*类说明:
*/
public class Dxnbz {
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame("东西南北中布局");
f.setSize(300,300);
f.setLocation(200,200);
f.setVisible(true);
Button b1 = new Button("东");
Button b2 = new Button("西");
Button b3 = new Button("南");
Button b4 = new Button("北");
Button b5 = new Button("中");
f.add(b1,BorderLayout.EAST);
f.add(b2,BorderLayout.WEST);
f.add(b3,BorderLayout.SOUTH);
f.add(b4,BorderLayout.NORTH);
f.add(b5,BorderLayout.CENTER);
}
}
GridLayout布局:里面有两个参数行和列,按钮会自动填充行列的格子
import java.awt.*;
/**
*@author 作者 Your-Name:
*@version 创建时间:
*类说明:
*/
public class TableBuJu {
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame("表格布局");
Button b1 = new Button("红");
Button b2 = new Button("黄");
Button b3 = new Button("蓝");
Button b4 = new Button("绿");
Button b5 = new Button("青");
Button b6 = new Button("靛");
f.setLayout(new GridLayout(3,2));//三行两列填充
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.setSize(400,400);
f.setLocation(100,100);
f.setVisible(true);
}
}
综合应用
效果图
思路:方法1,我们可以首先看成是一个上下结构的即2行1例的布局
然后我们再看上面的可以在它的上面添加一个面板来放4个按钮,我们可以在面板的左右两边放置一个按钮
然后中间还有两个按钮,我们可以在中间放置一个面板让它是第三种布局即是2行1列的
下面的分析方法同上面的
import java.awt.*;
/**
*@author 作者 Your-Name:
*@version 创建时间:
*类说明:
*/
public class Text1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame("布局");
f.setLocation(100,100);
f.setSize(400,400);
f.setVisible(true);
f.setLayout(new GridLayout(2,1));
// f.add(b1,BorderLayout.EAST);
// f.add(b2,BorderLayout.WEST);
// f.add(b3,BorderLayout.SOUTH);
// f.add(b4,BorderLayout.NORTH);
// f.add(b5,BorderLayout.CENTER);
// f.setLayout(new GridLayout(3,2));//三行两列填充
// f.setLayout(new FlowLayout(FlowLayout.LEFT));
//面板
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new GridLayout(2,1));
Panel p3 = new Panel(new BorderLayout());
Panel p4 = new Panel(new GridLayout(1,2));
Button b1 = new Button("1");
Button b2 = new Button("1");
p1.add(b1,BorderLayout.WEST);
p1.add(b2,BorderLayout.EAST);
f.add(p1);
Button b3 = new Button("1");
Button b4 = new Button("1");
p2.add(b3);
p2.add(b4);
p1.add(p2);
Button b5 = new Button("1");
Button b6 = new Button("1");
p3.add(b5,BorderLayout.WEST);
p3.add(b6,BorderLayout.EAST);
Button b7 = new Button("1");
Button b8 = new Button("1");
p4.add(b7);
p4.add(b8);
p3.add(p4);
f.add(p3);
}
}
方法2:用定位的方式,需要8个按钮,分别计算它的位置即button的setBounds(x,y,w,h)属性
下一篇: javaUI之三种布局管理