java 4种 布局方法_Java- 几种常见的布局管理

使用Eclipse做Java的WinForm程序时,并没有拖拉控件的方式。在VS里感受了拖拉控件的好处,看到Java没有,感觉很不习惯。但是Java提供了各种各样的布局管理,使用这些布局管理可以做到更精确的布局吧?我只是想简单的接触下Java,而且这块感觉就像Java所特有的,不太喜欢。所以简单了解一下就可以了!

AWT(Abstract Windows Toolkit)抽象窗口开发包,用于Java Application的GUI编程。本质是希望跨平台。Container和Component是AWT中两个核心类。

16b58c585c6e2497424df4cceba53a00.png

Component又包括一个子类Container。Java图形用户界面最基本组成部分是Component,Component类及其子类的对象用来描述以图形化方式显示在屏幕上并能与用户进行交互的GUI元素。一般的Component对象不能独立的显示出来,必须与某一Container对象中才可以显示出来。

创建Windows窗体的方法一

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

public classvvv {public static void main(String[] args) throwsException {

Frame f= new Frame("Test");

f.setSize(170,200);

f.setBackground(Color.blue);

f.setVisible(true);

f.addWindowListener(newWindowAdapter(){

@Overridepublic voidwindowClosing(WindowEvent e) {super.windowClosing(e);

System.exit(0);

}

});

}

}

创建Windows窗体的方法二

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

importjava.awt.Color;importjava.awt.Frame;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;public classvvv {public static void main(String[] args) throwsException {

MyFrame frame= new MyFrame("这是一个窗体", 100, 100, 300, 400, Color.blue);

}

}class MyFrame extendsFrame {

MyFrame(String name,int x, int y, int width, intheight, Color c) {super(name);this.setBackground(c);this.setBounds(x, y, width, height);this.setVisible(true);this.addWindowListener(newWindowAdapter(){

@Overridepublic voidwindowClosing(WindowEvent e) {super.windowClosing(e);

System.exit(0);

}

});

}

}

AWT提供了5种布局管理器类:

FlowLayout 、BorderLayout、GridLayout、CardLayout、GridBagLayout

1.FlowLayout是Panel类的默认布局管理器。

FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。可以设不同的间距及对齐方式,默认的对齐方式是局中。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

importjava.awt.Button;importjava.awt.Color;importjava.awt.FlowLayout;importjava.awt.Frame;importjava.awt.Panel;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;public classvvv {public static void main(String[] args) throwsException {

Frame f= new Frame("FlowLayout Demo");

Button btn1= new Button("Button1");

Button btn2= new Button("Button2");

Button btn3= new Button("Button3");

Button btn4= new Button("Button4");

Button btn5= new Button("Button5");

Button btn6= new Button("Button6");

Button btn7= new Button("Button7");

Panel panel= newPanel();

panel.setLayout(new FlowLayout(FlowLayout.LEFT,25,25));//设置向左对齐,垂直间距5,水平间距5

panel.add(btn1);

panel.add(btn2);

panel.add(btn3);

panel.add(btn4);

panel.add(btn5);

panel.add(btn6);

panel.add(btn7);

f.setBounds(100, 100, 500, 400);

f.add(panel);

f.setVisible(true);

f.addWindowListener(newWindowAdapter(){

@Overridepublic voidwindowClosing(WindowEvent e) {//TODO Auto-generated method stub

super.windowClosing(e);

System.exit(0);

}

});

}

}

2.BorderLayout是Frame类的默认布局管理器,BorderLayout将整个容器的布局划分成

东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)

如不指定组件的加入部位,则默认加入到CENTER区。

每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngView Code

importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Frame;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;public classvvv {public static void main(String[] args) throwsException {

Frame f= new Frame("FlowLayout Demo");

Button btn1= new Button("Button1");

Button btn2= new Button("Button2");

Button btn3= new Button("Button3");

Button btn4= new Button("Button4");

Button btn5= new Button("Button5");

f.setLayout(newBorderLayout());

f.add(btn1,BorderLayout.EAST);

f.add(btn2,BorderLayout.WEST);

f.add(btn3,BorderLayout.NORTH);

f.add(btn4,BorderLayout.SOUTH);

f.add(btn5,BorderLayout.CENTER);

f.setBounds(100, 100, 500, 400);

f.setVisible(true);

f.addWindowListener(newWindowAdapter(){

@Overridepublic voidwindowClosing(WindowEvent e) {//TODO Auto-generated method stub

super.windowClosing(e);

System.exit(0);

}

});

}

}

3.GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右满一行后换行,再从上到下。

在GridLayout构造方法中指定分割的行数和列数

如:GridLayout(3,4);

importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Frame;importjava.awt.GridLayout;importjava.awt.Panel;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;public classvvv {public static void main(String[] args) throwsException {

Frame f= new Frame("GridLayout Demo");

Button btn1= new Button("Button1");

Button btn2= new Button("Button2");

Button btn3= new Button("Button3");

Button btn4= new Button("Button4");

Button btn5= new Button("Button5");

Button btn6= new Button("Button6");

Button btn7= new Button("Button7");

Button btn8= new Button("Button8");

Button btn9= new Button("Button9");

Button btn10= new Button("Button10");

f.setLayout(new GridLayout(3,4));

f.add(btn1);

f.add(btn2);

f.add(btn3);

f.add(btn4);

f.add(btn5);

f.add(btn6);

f.add(btn7);

f.add(btn8);

f.add(btn9);

f.add(btn10);

f.setBounds(100, 100, 250, 150);

f.setVisible(true);

f.addWindowListener(newWindowAdapter(){

@Overridepublic voidwindowClosing(WindowEvent e) {//TODO Auto-generated method stub

super.windowClosing(e);

System.exit(0);

}

});

}

}

如果在Frame想加入Panel的布局,那么需先将Frame有布局方式清空。

布局管理器的总结:Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout。所以如果直接往Frame里面放一个Panel,他将会把Panel放大居中。如果用户需要亲自设置组件大小或位置,则应取消容器的布局管理器,方法为 setLayout(null);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值