AWT图形用户界面设计之一(Frame&Panel)

 

1 用AWT生成图形化用户界面

 
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立图形用户界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括: 用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。

1.1 java.awt包
 
  java.awt包中提供了GUI设计所使用的类和接口,可从下图中看到主要类之间的关系。


  java.awt包提供了基本的java程序的GUI设计工具。主要包括下述三个概念:

  组件--Component
  容器--Container
  布局管理器--LayoutManager

1.2 组件和容器

  Java的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。

  类java.awt.Component是许多组件类的父类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等,因此许多组件类也就继承了Component类的成员方法和成员变量,相应的成员方法包括:

   getComponentAt(int x, int y)
   getFont()
   getForeground()
   getName()
   getSize()
   paint(Graphics g)
   repaint()
   update()
   setVisible(boolean b)
   setSize(Dimension d)
   setName(String name)等

  
  容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。

  布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。

  为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。

  在程序中安排组件的位置和大小时,应该注意以下两点:
  1.容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java 语言提供的setLocation(),setSize(),setBounds() 等方法,则都会被布局管理器覆盖。

  2.如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
   setLayout(null);

1.3 常用容器

  容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。
有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。
1.Frame

  
以下是容器的例子:
例1

 1  import  java.awt. * ;
 2  public   class  MyFrame  extends  Frame{
 3    public   static   void  main(String args[ ]){
 4    MyFrame fr  =   new  MyFrame( " Hello Out There! " ); // 构造方法
 5    fr.setSize( 200 , 200 ); // 设置Frame的大小,缺省为(0,0)
 6    fr.setBackground(Color.red); // 设置Frame的背景,缺省为红色
 7    fr.setVisible( true ); // 设置Frame为可见,缺省为不可见
 8   }
 9    public  MyFrame (String str){
10     super (str); // 调用父类的构造方法
11   }
12  }

运行结果如下:

2. Panel

  
例2
 1  import  java.awt. * ;
 2  public   class  FrameWithPanel  extends  Frame{
 3    public  FrameWithPanel(String str){
 4     super (str);
 5   }
 6    public   static   void  main(String args[]){
 7    FrameWithPanel fr  =   new  FrameWithPanel( " Frame with Panel " );
 8    Panel pan = new  Panel();
 9    fr.setSize( 200 , 200 );
10    fr.setBackground(Color.red); // 框架fr的背景颜色设置为红色
11    fr.setLayout( null ); // 取消布局管理器
12    pan.setSize( 100 , 100 );
13    pan.setBackground(Color.yellow); // 设置面板pan的背景颜色为黄色
14    fr.add(pan); // 用add方法把面板pan添加到框架fr中
15    fr.setVisible( true );
16   }
17  }
运行结果如下:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值