Java GUI-AWT

本文介绍了Java AWT(Abstract Window Toolkit)库,用于构建跨平台的图形用户界面。主要内容包括组件的创建、容器(如Frame、Dialog、Panel)的使用、布局管理器(FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout、BoxLayout)的概念及应用,以及2D图形的绘制原理和方法。文章通过示例代码详细展示了如何在Java中创建和管理GUI组件,以及如何利用Graphics进行2D绘图操作。
摘要由CSDN通过智能技术生成

Java GUI-AWT

sf2gis@163.com

2015年12月29日

 

1 目标:提供Java的WriteOnce,RunAnywhere的目标,提供跨平台的GUI。

2 原理:针对不同平台调用OS底层的GUI,封装统一API。

但是对于平台特有的组件无法实现Java的跨平台目标,并且Java使用JNI调用底层GUI的方式也给跨平台带来不便。于是Java在后续的GUI中使用AWT的扩展版本Swing代替AWT。

参考:《疯狂java讲义(第2版)》

注意:由于AWT已经被Swing替代,仅学习其基本功能,作为Swing的基础。

3 流程:创建组件,设置组件属性,显示组件。

//Main.java

package lee;

 

import java.awt.Frame;

import java.awt.Window;

 

/**

 * @author sf2gis@163.com

 *

 */

public class Main {

 

      /**

       * @param args

       */

      public static void main(String[] args) {

           // TODO Auto-generated method stub

           Framef=new Frame();

           f.setBounds(30,30,200,200);

           f.setVisible(true);

      }

 

}

4 方法:GUI组件

参考:http://www.cnblogs.com/growup/archive/2010/04/24/1971548.html

4.1 组织结构:

Object:基类

-|Component:基本组件

--|Container:容器

--|Button等具体组件

-|MenuComponent:菜单组件

--|MenuBar:菜单栏

--|MentItem:菜单项

---|Menu:菜单

4.2 容器:用于组织其它组件,包括一个布局。

4.2.1分类:框架、对话框等。

4.2.1.1  窗口Window:抽象概念(很少使用),表示一块屏幕区域,无边框,不能调整大小。

根据子组件自动调整大小pack()。

4.2.1.2  框架Frame:Window的子类,具有边框,菜单,能够调整大小等,与Win平台的Window,From很像。默认使用BorderLayout布局。
4.2.1.3  对话框Dialog:Window的子类,与Frame类似,无菜单。
4.2.1.4  面板Panel:用于盛放其它组件,默认使用FlowLayout布局。
4.2.1.5  滚动面板ScrollPane:用于盛放其它组件,默认使用BorderLayout布局(一般不需修改)。

 

4.2.2属性设置:大小,位置等。

大小:setSize(),

位置:setLocation()。

大小和位置:setBounds()。

可见性(默认不可见):setVisible()。

4.2.3子组件设置:CRUD

增:add()。

删:

改:

查:getComponents(),getComponentAt(),getComponentCount()。

4.2.4 示例

//Main.java

package lee;

 

import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.ScrollPane;

import java.awt.TextField;

 

/**

 * @author sf2gis@163.com

 *

 */

public class Main {

 

      /**

       * @param args

       */

      public static void main(String[] args) {

           // TODO Auto-generated method stub

           Frame f=new Frame();

           f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 10));

           f.setBounds(30,30,200,200);

           f.setVisible(true);

           f.setTitle("Hello,World!");

           Panelp1=new Panel();

           p1.add(new Button("Hello"));

           f.add(p1);

           ScrollPanep2=new ScrollPane();

           p2.add(new TextField(200));

           f.add(p2);

      }

 

}

4.3 布局管理器:Layout

4.3.1目标:自动调整大小,避免不同平台位置和大小需要手动调整。

4.3.2原理:根据一定的规则自动调整大小和位置。

4.3.3方法:

4.3.3.1  FlowLayout:流动布局,按顺序排列,到达边界后折行。

可以指定对齐方式,间距(水平、垂直)。

//Main.java

/**

 * Demo

 */

package lee;

 

import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.TextField;

 

/**

 * @author sf2gis@163.com

 *

 */

public class Main {

 

      /**

       * @param args

       */

      public static void main(String[] args) {

            // TODOAuto-generated method stub

           Frame f=new Frame();

           f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 10));

           f.setBounds(30,30,200,200);

           f.setVisible(true);

           f.setTitle("Hello,World!");

           f.add(new Button("Hello"));

           f.add(new TextField(20));

      }

}

4.3.3.2  BorderLayout:分区布局,按五大区域分块(与easyui相同)。

默认添加到Center区域中。

//Main.java

/**

 * Demo

 */

package lee;

 

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Frame;

 

/**

 * @author sf2gis@163.com

 *

 */

public class Main {

 

      /**

       * @param args

       */

      public static void main(String[] args) {

           // TODO Auto-generated method stub

           Frame f=new Frame();

           f.setLayout(new BorderLayout(20, 10));

           f.setBounds(30,30,200,200);

           f.setVisible(true);

           f.setTitle("Hello,World!");

           f.add(new Button("NORTH"),BorderLayout.NORTH);

           f.add(new Button("WEST"),BorderLayout.WEST);     

           f.add(new Button("CENTER"),BorderLayout.CENTER);       

           f.add(new Button("EAST"),BorderLayout.EAST);

           f.add(new Button("SOUTH"),BorderLayout.SOUTH);

           f.pack();

      }

}

4.3.3.3  GridLayout:表格,从左到右,从上到下组织。

//Main.java

/**

 * Demo

 */

package lee;

 

import java.awt.Button;

import java.awt.Frame;

import java.awt.GridLayout;

 

/**

 * @author sf2gis@163.com

 *

 */

public class Main {

 

      /**

       * @param args

       */</

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值