学习笔记之面向对象编程29(GUI编程之布局管理器)
2017-09-29 11:27
489 查看
(一)在java语言中,提供了布局管理器的对象可以管理
《1》管理Component在Container的布局,不必直接设置Component位置和大小
《2》每个Container都有一个布局管理对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象。
(二)AWT提供了5种布局管理器:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout
《1》FlowLayout布局管理器
a:FlowLayout是Panel类的默认的布局管理器;
FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行
不改变组件的大小,按组件原有尺寸显示组件可设置不同的组件间距,行距以及对齐方式
b:FlowLayout布局管理器默认的对齐方式是居中
c:FlowLayout的构造方法
new FlowLayout(FlowLayout.RIGHT,20,40):右对齐,组件之间水平间距20个像素,垂直间距40个像素
new FlowLayout(FlowLayout.LEFT):左对齐,水平和垂直间距为缺省值(5)
new FlowLayout():使用缺省的剧中对齐方式,水平和垂直间距为缺省值(5)
举例如下:
import java.awt.*;
public class TestFlowLayout {
public static void main(String[] args){
Frame f = new Frame("Frame Layout");
Button button1 = new Button("OK");
Button button2 = new Button("Open");
Button button3 = new Button("Close");
f.setLayout(new FlowLayout());
f.add(button1);
f.add(button2);
f.add(button3);
f.setSize(100,100);
f.setVisible(true);
}
}
运行结果:
import java.awt.*;
public class TestFlowLayout2 {
public static void main(String[] args){
Frame f = new Frame("java Frame");
FlowLayout l = new FlowLayout(FlowLayout.CENTER,20,40);
f.setLayout(l);
f.setLocation(300,400);
f.setSize(300,200);
f.setBackground(new Color(204,204,255));
for(int i=1;i<=7;i++){
f.add(new Button("BUTTON"));
}
f.setVisible(true);
}
}
运行结果:
《2》BorderLayout布局管理器
a:BorderLayout是Frame类的默认布局管理器
b:BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)5个区域,组件只能被添加到指定的区域
c:如不指定组件的加入部位,则默认加入到CENTER
d:每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖
e:BorderLayout型布局容器尺寸缩放原则:南北两个区域在水平方向缩放;东西两个区域在垂直方向缩放;中部可在两个方向上缩放
举例如下:
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args){
Frame f;
f = new Frame("hello");
Button b1 = new Button("B1");
Button b2 = new Button("B2");
Button b3 = new Button("B3");
Button b4 = new Button("B4");
Button b5 = new Button("B5");
f.add(b1,BorderLayout.NORTH);
f.add(b2, BorderLayout.SOUTH);
f.add(b3, BorderLayout.WEST);
f.add(b4, BorderLayout.EAST);
f.add(b5, BorderLayout.CENTER);
f.setSize(200,200);
f.setVisible(true);
}
}
运行结果:
《3》GirdLayout布局管理器
a:GirdLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下
b:在Gridlayout构造方法中指定分隔的行数和列书
举例如下:
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args){
Frame f = new Frame("GridLayout Example");
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
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.pack();
f.setVisible(true);
}
}
运行结果:
布局管理器总结:
1,Frame是一个顶级窗口,Frame的缺省布局管理器为 BorderLayout
2,Panel无法单独显示,必须添加到某个容器中,Panel的缺省布局管理器为FlowLayout
3,当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以直接有自己的布局管理器
4,使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件大小和位置属性,如果试图使用java语言提供的setLocation(),setSize(),setBounds()
9eec
等方法,则会被布局管理器覆盖
5,如果用户确实不需要亲自设置组件大小或位置,则应取消该容器的布局管理器,反复为setLayout(null)
《1》管理Component在Container的布局,不必直接设置Component位置和大小
《2》每个Container都有一个布局管理对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象。
(二)AWT提供了5种布局管理器:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout
《1》FlowLayout布局管理器
a:FlowLayout是Panel类的默认的布局管理器;
FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行
不改变组件的大小,按组件原有尺寸显示组件可设置不同的组件间距,行距以及对齐方式
b:FlowLayout布局管理器默认的对齐方式是居中
c:FlowLayout的构造方法
new FlowLayout(FlowLayout.RIGHT,20,40):右对齐,组件之间水平间距20个像素,垂直间距40个像素
new FlowLayout(FlowLayout.LEFT):左对齐,水平和垂直间距为缺省值(5)
new FlowLayout():使用缺省的剧中对齐方式,水平和垂直间距为缺省值(5)
举例如下:
import java.awt.*;
public class TestFlowLayout {
public static void main(String[] args){
Frame f = new Frame("Frame Layout");
Button button1 = new Button("OK");
Button button2 = new Button("Open");
Button button3 = new Button("Close");
f.setLayout(new FlowLayout());
f.add(button1);
f.add(button2);
f.add(button3);
f.setSize(100,100);
f.setVisible(true);
}
}
运行结果:
import java.awt.*;
public class TestFlowLayout2 {
public static void main(String[] args){
Frame f = new Frame("java Frame");
FlowLayout l = new FlowLayout(FlowLayout.CENTER,20,40);
f.setLayout(l);
f.setLocation(300,400);
f.setSize(300,200);
f.setBackground(new Color(204,204,255));
for(int i=1;i<=7;i++){
f.add(new Button("BUTTON"));
}
f.setVisible(true);
}
}
运行结果:
《2》BorderLayout布局管理器
a:BorderLayout是Frame类的默认布局管理器
b:BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)5个区域,组件只能被添加到指定的区域
c:如不指定组件的加入部位,则默认加入到CENTER
d:每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖
e:BorderLayout型布局容器尺寸缩放原则:南北两个区域在水平方向缩放;东西两个区域在垂直方向缩放;中部可在两个方向上缩放
举例如下:
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args){
Frame f;
f = new Frame("hello");
Button b1 = new Button("B1");
Button b2 = new Button("B2");
Button b3 = new Button("B3");
Button b4 = new Button("B4");
Button b5 = new Button("B5");
f.add(b1,BorderLayout.NORTH);
f.add(b2, BorderLayout.SOUTH);
f.add(b3, BorderLayout.WEST);
f.add(b4, BorderLayout.EAST);
f.add(b5, BorderLayout.CENTER);
f.setSize(200,200);
f.setVisible(true);
}
}
运行结果:
《3》GirdLayout布局管理器
a:GirdLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下
b:在Gridlayout构造方法中指定分隔的行数和列书
举例如下:
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args){
Frame f = new Frame("GridLayout Example");
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
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.pack();
f.setVisible(true);
}
}
运行结果:
布局管理器总结:
1,Frame是一个顶级窗口,Frame的缺省布局管理器为 BorderLayout
2,Panel无法单独显示,必须添加到某个容器中,Panel的缺省布局管理器为FlowLayout
3,当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以直接有自己的布局管理器
4,使用布局管理器时,布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件大小和位置属性,如果试图使用java语言提供的setLocation(),setSize(),setBounds()
9eec
等方法,则会被布局管理器覆盖
5,如果用户确实不需要亲自设置组件大小或位置,则应取消该容器的布局管理器,反复为setLayout(null)
相关文章推荐
- JavaSE学习55:GUI编程之布局管理器
- 鱼c笔记——Python的GUI编程(十六):Tkinter的三大布局管理器pack、grid和place
- J2ME学习笔记(五)-----MIDlets中GUI(图形)编程
- Android 学习笔记6:布局管理器
- 黑马程序员_温习 GUI图形用户接口一 (个人笔记)摘要(GUI图形用户界面介绍-----布局管理器-----事件监听机制-----窗体事件---Action(执行事件)----鼠标事件----键
- Python:GUI之tkinter学习笔记2界面布局显示
- python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)
- Java GUI编程的几种常用布局管理器
- Android 学习笔记5:GUI编程
- QT学习笔记1---布局管理器
- python的GUI编程--wxpython学习(三)两个布局
- #笔记#圣思园 JavaSE 第76讲——GUI,AWT组件,布局管理器
- swing学习笔记十一(卡片布局管理器CardLayout )
- Java 学习笔记 (7) - GUI编程之Java小程序 Applet
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- QT学习笔记----布局管理器的使用
- Java学习笔记-------布局管理器
- swing学习笔记十一(卡片布局管理器CardLayout )
- ASP.NET 3.5核心编程学习笔记(29):HttpServerUtility类
- python学习笔记——Tkinter GUI编程——简介