Java学习笔记(七):AWT编程

个人感受:java的图形界面编程和之前学习的VB差不多,但VB的控件太过死板,而用Java提供的类则可以写出丰富多彩的图形界面来。Java中提供了几种不同的界面布局方式,非常自由且强大,当然布局为其次,安排好事件之间的监听机制才是难点,知道要做出什么才是最为重要的。

两个重要的概念

Container,是一种特殊的component,它代表一种容器,可以盛装普通的component。

Layoutmanger,则是容器管理其他组建的布局方式。d

在java.awt包中提供了两种基类来表示图形界面元素,一种是Component,可以和用户交互的对象啊,一种是MenuComponent,代表图形界面的菜单组件。

AWT容器 

Container是Component的子类,本是也是一种组件,具有组件的所有性质和方法,如setBounds(int x ,int y,int width,int height),setVisible(Boolean b),Component add(Component comp)等

经典的有Frame,是Window的子类,代表常见的窗口,其有标题,初始化时为不可见,默认使用borderlayout为其布局管理器,可由鼠标移动和拖放。

Panel,其存在的 意义在于为其他组件提供空间,不能单独存在,必须被添加到其他容器中,当然其本身也是容器,可通过多重添加来增加组件。默认使用borderlayout为其布局管理器

ScrollPane是一个带滚动条的 容器,当组件占用空间过大时,会自动产生滚动条,,也不能单独存在,默认采用borderlayout为其布局管理器。

布局管理器

因为在不同的平台上有各自最佳的显示方式,如果让程序员进行调整的话,会非常繁琐,所以Java用LayoutManager来调整组件的大小,我们只需要选择合适的布局管理器,所有的容器都有其默认的布局管理器,可通过c.setLayout(new XxxLayout())方式来制定布局管理器。

FlowLayout布局管理器。在默认情况下从左向右排列组件,遇到边界就会折到下一行,和words类似,构造器FlowLayout(int align,int hgap,int vgap):使用制定的对齐方式,垂直间距和水平间距,其中align为FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT

BorderLayout布局管理器,将容器分为BorderLayout.EAST,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.NORTH,BorderLayout.CENTER五个区域,默认是将组件放置在CENTER区域,且会覆盖前一组件,如果某个区域没有放置组件,旁边的组件会自动填充,以达到良好的视觉效果

GirdLayout布局管理器,将容器分割为纵横线分割的网格,默认从左向右,从上向下依次添加到网格中,而且各个组件的大小由组件所处的区域决定,会自动填充整个区域,构造器GirdLayout(int rows,int cols,int hagp,int vgap)

AWT常用组件

Button,canvas,choice,label,list,panel,scrollbar,scrollpane,textarea,textfield,这里不多说,可参看API文档。

对话框

对话框Dialog重点是在于模式和非模式,模式对话框被打开后,该对话框总是位于它依赖的窗口之上,在被关闭之前,它依赖的窗口无法获得焦点。构造器new Dialog(f,tilte,modal)

FileDialog文件对话框也有点意思,构造器new FileDialog(f,title,mode)

事件处理

现在到了最伟大的实践监听机制了,在AWT编程中,所有事件必须由事件监听器来处理,怎么听起来和多态好像。最重要的概念,事件源,即事件发生的场所,事件,即封装的GUI组件上发生的特定事件,事件监听器,负责监听事件源发生的事件,并作出响应。b1.addActionListener(e -> d1.setVisible(true));bi是一个Button,当单击时事件监听器e会作出反应。每个组件可以针对特定的事件指定一个或多个事件监听对象,每个事件监听器也可以监听一个或多个事件源。

事件监听器必须实现事件监听器接口,AWT提供了大量的事件监听器接口用于实现不同类型的事件监听器,用于监听不同类型的事件,AWT的事件类都是AWTEvent类的子类,而AWTEvent是EvenObject的子类

差点忘了,import中的*通配符只限定类,不限定包,故还要import java.awt.event.*


shift+ctrl+o就可以快速导入所需包。

你可能感兴趣的:(Java学习笔记(七):AWT编程)