坚持学习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布局学习(新)的更多相关文章

  1. java布局学习 (一)

    Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式.这是由于组件的最佳大小 往往是与平台相 ...

  2. Android&Java的学习新的等

    学习资料 很久没写博客了.适逢这次Srtp项目学弟学妹们要学习Java与Android,我就总结一些学习的教材.方法,分享写材料与心得.纯个人观点,如有不周之处欢迎指出,大家共同探讨提高. *** 教 ...

  3. java布局学习 (二)

    前文中介绍了FlowLayout和BorderLayout 本文我们将会继续介绍java中的布局方式 (3)GridLayout 网格布局 这种布局会将整个容器划分成M行*N列的网格. 如下图:    ...

  4. java布局学习 (三)

    前文已经讲了常用的4个布局了,今天再介绍最后的三个布局: 5.CardLayout 6.BoxLayout 7.空白布局null (五)CardLayout   纸牌布局 首先这种布局不是二维布局,而 ...

  5. Java基础学习总结(33)——Java8 十大新特性详解

    Java8 十大新特性详解 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API ...

  6. Java 日志学习

    Java 日志学习,主要学习log4j,(为了查找方便,直接拷贝别人文章:原文:http://www.cnblogs.com/xt0810/p/3659045.html) [结构] java日志对调试 ...

  7. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  8. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  9. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

随机推荐

  1. 如何取得SharePoint Timer Job的历史成功数和失败数,并按照日期计算排列

    [问题]. 如何取得SharePoint Timer Job的历史成功数和失败数,并按照日期计算排列 [分析] 管理中心只是罗列了所有job的历史和上一次是否成功,没有关于成功和失败的统计数据 [解决 ...

  2. MariaDB快速批量插入数据的几种办法

    前言 当要向MariaDB中插入新的数据时,以下过程会影响插入所消耗的时间:(按时间消耗长短降序排序) 将数据sync到磁盘上(它是事务结束的一部分) 添加新的键值.索引越大,更新键值所消耗的时间就越 ...

  3. 文本处理三剑客之 awk

    GAWK:报告生成器,格式化文本输出 awk [options] ‘program’ var=value file… awk [options] -f programfile var=value fi ...

  4. 一、用Delphi10.3 创建一条JSON数据

    一.用Delphi10.3构造一个JSON数据,非常之容易,代码如下: uses System.JSON; procedure TForm1.Button1Click(Sender: TObject) ...

  5. 【转】mxGraph教程-开发入门指南

    原文:https://blog.csdn.net/sunhuaqiang1/article/details/51289580 mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适 ...

  6. Java序列化与反序列化(实践)

    Java序列化与反序列化(实践) 基本概念:序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据. 昨天在一本书上 ...

  7. win10操作系统vs2010编译osg3.4.0问题解决记录

    参考博客:OSG3.4.0+VS2010+WIN10编译及二次开发环境搭建 链接:https://blog.csdn.net/hsc1239653453/article/details/7827856 ...

  8. 学习笔记:启动对特定用户的会话的sql跟踪

    学习 Oracle性能诊断艺术 制作一个role: CREATE ROLE sql_trace; 然后再作一个数据库登录级别的触发器: CREATE OR REPLACE TRIGGER enable ...

  9. 24-[jQuery]-属性,文档,位置,筛选

    1.jquery的属性操作 jquery对象有它自己的属性和方法,我们先研究一下jquery的属性操作.jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 h ...

  10. 使用Themeleaf时, HTML内嵌的JS代码需要注意< 和 >的问题

    如果你使用了Themeleaf, 你的HTML文件又使用了内嵌的JS代码,那么一定要注意 你的JS代码必须用这样用: <script> /*<![CDATA[*/ var a = 6 ...