Java- 几种常见的布局管理
来源:互联网 发布:vue.js和knockout比较 编辑:程序博客网 时间:2024/04/30 22:56
使用Eclipse做Java的WinForm程序时,并没有拖拉控件的方式。在VS里感受了拖拉控件的好处,看到Java没有,感觉很不习惯。但是Java提供了各种各样的布局管理,使用这些布局管理可以做到更精确的布局吧?我只是想简单的接触下Java,而且这块感觉就像Java所特有的,不太喜欢。所以简单了解一下就可以了!
AWT(Abstract Windows Toolkit)抽象窗口开发包,用于Java Application的GUI编程。本质是希望跨平台。Container和Component是AWT中两个核心类。
Component又包括一个子类Container。Java图形用户界面最基本组成部分是Component,Component类及其子类的对象用来描述以图形化方式显示在屏幕上并能与用户进行交互的GUI元素。一般的Component对象不能独立的显示出来,必须与某一Container对象中才可以显示出来。
创建Windows窗体的方法一
public class vvv { public static void main(String[] args) throws Exception { Frame f = new Frame("Test"); f.setSize(170,200); f.setBackground(Color.blue); f.setVisible(true); f.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(0); } }); }}
创建Windows窗体的方法二
import java.awt.Color;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class vvv { public static void main(String[] args) throws Exception { MyFrame frame = new MyFrame("这是一个窗体", 100, 100, 300, 400, Color.blue); }}class MyFrame extends Frame { MyFrame(String name, int x, int y, int width, int height, Color c) { super(name); this.setBackground(c); this.setBounds(x, y, width, height); this.setVisible(true); this.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.exit(0); } }); }}
AWT提供了5种布局管理器类:
FlowLayout 、BorderLayout、GridLayout、CardLayout、GridBagLayout
1.FlowLayout是Panel类的默认布局管理器。
FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。可以设不同的间距及对齐方式,默认的对齐方式是局中。
import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Panel;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class vvv { public static void main(String[] args) throws Exception { 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 = new Panel(); 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(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub super.windowClosing(e); System.exit(0); } }); }}
2.BorderLayout是Frame类的默认布局管理器,BorderLayout将整个容器的布局划分成
东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)
如不指定组件的加入部位,则默认加入到CENTER区。
每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。
import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class vvv { public static void main(String[] args) throws Exception { 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(new BorderLayout()); 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(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub super.windowClosing(e); System.exit(0); } }); }}
3.GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。组件被添加到每个单元格中,先从左到右满一行后换行,再从上到下。
在GridLayout构造方法中指定分割的行数和列数
如:GridLayout(3,4);
import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class vvv { public static void main(String[] args) throws Exception { 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(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub super.windowClosing(e); System.exit(0); } }); }}
如果在Frame想加入Panel的布局,那么需先将Frame有布局方式清空。
布局管理器的总结:Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout。所以如果直接往Frame里面放一个Panel,他将会把Panel放大居中。如果用户需要亲自设置组件大小或位置,则应取消容器的布局管理器,方法为 setLayout(null);
- Java- 几种常见的布局管理
- swing的几种常见布局管理器
- 常见的几种内容样式布局
- 几种常见的CSS列布局
- 常见的几种布局总结
- 几种常见的布局界面
- 常见的几种页面布局方式
- 几种常见的网页布局形式
- Extjs4.0常见的几种布局详解
- Android中常见的几种布局及事例
- css常见的几种布局优点缺点总结
- 网页设计中常见的几种布局
- Android-Ui常见的几种布局管理器
- iOS中流水布局的几种常见方法
- 常见的几种页面内容布局方式
- 关于SWING的几种布局管理的实例
- java常见的几种异常
- 几种常见算法的JAVA实现
- Java- 网络编程 简单接触UDP
- Java- 网络编程 简单接触TCP
- Java- 事件处理机制
- 循环-输出字母围起的正方形
- Java- Eclipse常用快捷键
- Java- 几种常见的布局管理
- Java- 流
- 必须说服自己的内心
- 创业能力之一:为何越来越多有经验的CEO奋斗在创新第一线?
- 创新能力之二:Apple、三星和Google各自的创新之道
- 令人震惊的3d操作体验:LeapMotion
- Android权限大全
- 使用PHP处理POST上传时$_FILES数组为何为空
- 字符串反转