java布局学习(新)
坚持学习java一段时间,最近自己需要做一个小型的系统,所以需要自己将自己的AWT知识巩固一下。
一、4大布局管理器。
1.边界布局BorderLayout
是JFrame和JDialog的默认布局方法,可以看成地图的排列方式,一共四个方位:东西南北和地图一样,不同的是上北和下南都没有中间的位置占有的大,中部的占有最大。
举例:
package com.ly; import javax.swing.*;
import java.awt.*; public class demo1 extends JFrame{ JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
demo1 d1=new demo1();
}
public demo1()
{
jb1=new JButton("中");
jb2=new JButton("北");
jb3=new JButton("东");
jb4=new JButton("南");
jb5=new JButton("西"); //添加各个组件
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.NORTH);
this.add(jb3,BorderLayout.EAST);
this.add(jb4,BorderLayout.SOUTH);
this.add(jb5,BorderLayout.WEST); //设置布局
this.setTitle("边界布局");
this.setSize(300,300);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); }
}
2.流式布局FlowLayout
这样的布局会使部件想水流一样流动从左到右排列,直到遇到边界后才重新排列。在Panel中默认使用这种排列方式。
举例:
package com.ly; import java.awt.FlowLayout; import javax.swing.*; public class Demo2 extends JFrame{ JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo2 d2=new Demo2();
} public Demo2()
{
jb1=new JButton("1");
jb2=new JButton("2");
jb3=new JButton("3");
jb4=new JButton("4");
jb5=new JButton("5"); this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5); //设置布局
this.setLayout(new FlowLayout());
this.setTitle("流布局");
this.pack();
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
3.GridLayout布局管理器
这样的布局管理将容器分割成纵横线的网络。我个人认为这样的布局方式较上两种都好,因为更加灵活,写一些基本的布局都可以转换。
package com.ly;
import java.awt.GridBagLayout;
import java.awt.GridLayout; import javax.swing.*; public class Demo3 extends JFrame{ int size=9;
JButton []jbs=new JButton[size]; public static void main(String[] args) {
// TODO Auto-generated method stub Demo3 d3=new Demo3(); } public Demo3()
{
for(int i=0;i<size;i++)
{
jbs[i]=new JButton(String.valueOf(i));
} //设置网格布局
this.setLayout(new GridLayout(3,3)); for(int i=0;i<size;i++)
{
this.add(jbs[i]);
} this.setTitle("网格布局");
this.setSize(300,300);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
4.CardLayout布局器
CardLayout布局器采用时间进行管理组件,可以看层是一个卡片盒,只有最上面的compent可见。
剩下的两种是我体会比较深的,特别是空布局,简直万能,不过就是要自己定位有些麻烦,大家有机会可以试试。
1.null布局
将Container 的布局管理器设置为null,setLayout(null)
再往容器添加时先调用setBounds()和setSize()设置组建大小和位置
2.BoxLayout布局管理器
我没用过这种管理器,不过这种管理器应该很强大,大家试试。
BoxLayout(Cotainer target,int axis) 而布局有axis横向排列和
纵向排列
如:f.setLayout(new BoxLayout(f,BoxLayout.y_AXIS));
BoxLayout通常和Box联合使用
二、AWT的常用组件
直接上程序吧,比较清晰。
//AWT基本组件
package com.ly.ll;
import java.awt.*;
import javax.swing.*; public class compoment { Frame f; //创建窗口
Button bt;
CheckboxGroup cbg; //复选框组
Checkbox male,female,married; //复选框
Choice colorChoice; //下拉选框
List colorList; //列表选择框
TextArea ta; //文本域(多行)
TextField name; //文本域(单行) public static void main(String []args)
{
compoment cp=new compoment();
} public compoment()
{
//创建组件
f=new Frame("测试界面");
bt=new Button("确认");
cbg=new CheckboxGroup();
male =new Checkbox("男",cbg,true);
female =new Checkbox("女",cbg,false);
married =new Checkbox("是否已婚?",false);
colorChoice=new Choice();
colorList=new List(3,true);
ta=new TextArea(5,20); //5行20 列
name=new TextField(50); //50列 //初始化组件
colorChoice.add("红");
colorChoice.add("黄");
colorChoice.add("蓝");
colorList.add("红");
colorList.add("黄");
colorList.add("蓝");
//panel装载文本按钮
Panel bottom=new Panel();
bottom.add(name);
bottom.add(bt);
f.add(bottom,BorderLayout.SOUTH); //Frame默认边界布局 Panel p2=new Panel();
p2.add(colorChoice);
p2.add(male);
p2.add(female);
p2.add(married); //创建垂直组件BOX
Box topList=Box.createVerticalBox();
topList.add(ta); //放入多航文本域
topList.add(p2); Box top=Box.createVerticalBox();
top.add(topList);
top.add(colorList);
f.add(top);
f.pack(); f.setVisible(true);
}
}
显示结果:
这样就对上面的知识点有了简单的总结和认识,但是要进行开发还是远远不够的
下面是java实战.转(url)
每日一小步,月过一大步~~加油
java布局学习(新)的更多相关文章
- java布局学习 (一)
Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式.这是由于组件的最佳大小 往往是与平台相 ...
- Android&Java的学习新的等
学习资料 很久没写博客了.适逢这次Srtp项目学弟学妹们要学习Java与Android,我就总结一些学习的教材.方法,分享写材料与心得.纯个人观点,如有不周之处欢迎指出,大家共同探讨提高. *** 教 ...
- java布局学习 (二)
前文中介绍了FlowLayout和BorderLayout 本文我们将会继续介绍java中的布局方式 (3)GridLayout 网格布局 这种布局会将整个容器划分成M行*N列的网格. 如下图: ...
- java布局学习 (三)
前文已经讲了常用的4个布局了,今天再介绍最后的三个布局: 5.CardLayout 6.BoxLayout 7.空白布局null (五)CardLayout 纸牌布局 首先这种布局不是二维布局,而 ...
- Java基础学习总结(33)——Java8 十大新特性详解
Java8 十大新特性详解 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API ...
- Java 日志学习
Java 日志学习,主要学习log4j,(为了查找方便,直接拷贝别人文章:原文:http://www.cnblogs.com/xt0810/p/3659045.html) [结构] java日志对调试 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- [转帖]java基础学习总结——多态(动态绑定)
https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态
- CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
随机推荐
- C#只能lock 引用类型的值 (转载)
Lock: C#只能lock 引用类型的值,如果lock一个int, bool,编译器会报错. 当一个互斥锁已被占用时,在同一线程中执行的代码仍可以获取和释放该锁.但是,在其他线程 ...
- oracle 事务 数据伪列
在用户进行数据更新操作(DML)事务一定会起作用. 事务的出现会保证数据的完整性.一致性.在整个事务的处理过程之中主要使用两个操作命令: · 事务的提交(COMMIT):是真正的向数据库之中发出更新指 ...
- iOS开发过程中易犯的小错误
addGestureRecognizer(_:) 一个手势对象只绑定一个view // 只有最后一个imgv有点击事件 let tap = UITapGestureRecognizer(target: ...
- iOS 倒计时的一种实现
1.view [self performSelectorInBackground:@selector(thread) withObject:nil]; - (void)thread { ;i>= ...
- 第一次作业:基于Linux-0.12的进程分析
这次作业主要基于Linux-0.12的源代码,分析Linux是如何组织进程,进程的状态之间是如何转换,以及进程是如何调度的. 一. 进程的概念: 1.进程就是:程序在数据集合上的一次运行过程,是系统进 ...
- JavaWeb基础—数据库连接池DBCP、C3P0
一.基本概念 数据库连接池负责分配.管理和释放数据库连接 数据库连接池:(池用map来实现居多) 用处:为了可重用(销毁创建麻烦,开销大)(招培训老师的例子) 二.编写实现数据库连接池 池参数: 初识 ...
- Linux5下安装MySQL过程记录
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackgao@gmail. ...
- 03、 forms组件
1.校验字段功能 1.reg页面准备 models from django.db import models class UserInfo(models.Model): useranme = mode ...
- 设置JFrame背景图片
这里我就放上改写的代码吧,不做多的解释,推荐一个好的博文 https://blog.csdn.net/jdsjlzx/article/details/16831815 public void ini_ ...
- 关于matlab向文件写入数据的方法——留着备用
MATLAB数据采集的时候,往往需要把得到的数据保存下来. fid = fopen(文件名,‘打开方式’): 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功.打开方式有如下选 ...