Java作为现在最流行的编程语言之一,总要有人喜欢就有它的独特之处。而程序员在开发软件的时候总会遇到设计软件界面的难题,而Java就提供了Java awt为程序员带来了便捷,在Java zwt中有组件、布局管理器以及事件监听器三个概念。但是如果没有人讲解或者听人讲了以后也不不能一次过明白,那么我们下面再来了解一下Java awt的各种功能。
概念
1.组件(component) 2.容器(Container) 3.布局管理器(LayoutManager)
要想用好Java awt就先得搞好他们之间的关系:容器中放置组件,组件的排列方式通过布局管理器设置。而窗口就像一块桌布,容器就放在桌布中。当你设置了布局管理器之后,你会发现你不能通过代码实现设置组件大小和位置,因为你没有取消容器的布局管理器。应设置为setLayout(null),如果不这样就会程序自动默认。
常用的容器有:Frame,Panel,Applet
1.Frame
用Frame生成一个窗口,一般都是用Frame而不用Windows。要注意的是,在在你用Frame生成窗口的时候,不会显示在屏幕上。因为你没有使用setSize() setVisible(true)。代码如下图:
还要注意的是所有关于窗口的设置都要放在setVisible()的前面,不然写在后面的代码将不会被实现。
2.Panel
Panel是放在窗口里面的面板。Panel也有关于大小,位置等的代码。添加panel的代码如下:
必须要先创建窗口才能添加面板
3.LayoutManger布局管理器
布局管理器通过授权可以变化组件的大小位置以及顺序,也可以设置当窗口移动时组件的变化。
Java中有不同的布局管理器,不同的管理器有不同的算法和规律,一不小会容易混淆其中的概念。
(1)FlowLayout
这是Panel和Applet的缺省布局管理器。规律为组件由上到下,从左到右放置。当容器发生变化时,组件代销不变,相对位置改变。
下面是Frame采用FlowLayout的例子:
Button button1 = new Button("OK");的意思就是生成一个按钮组件。然后通过f.add(button1);把它添加到Frame上去。
(2)GridLayout
规律:容器中各个组件呈网格状布局,平均占据容器的空间。
GridLayout例子:
运行示例:
(3)BorderLayout
这是Windows、Frame、和Dialog的缺省布局管理器
分为了东南西北中5个区域(North South East West Center)
规律是容器发生变化时,组件相对位置不变,但是组件大小会改变。
以下是:Frame使用BorderLayout的例子
(4)CardLayout(卡片布局)
卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout类提供的方法可以切换该空间中显示的组件。
代码例子:
事件监听器
Java的事件机制对于编程非常有用,下面是事件监听器的参与者:
1.事件对象:
继承于java.util.EventObject对象,由开发者自行定义。
2.事件源:
触发事件的源头,不同的事件源触发不同的事件。
3.事件监听器
负责监听事件源发出的事件。
整个处理的过程:事件源可以注册成为事件监听对象,并向事件监听器对象发送事件对象,事件发生后,事件源将事件对象发送给已经注册的所有事件监听器。监听器对象会根据事件对象内多对应的方法响应这个事件。
有四种事件监听器实现方式:以自身为监听、外部类、内部类以及匿名内部类。
下面是button注册Action事件:
在awt中只有十类事件
分为:低级事件和高级事件
低级事件:基于容器和组件
ComponentEvent 、ContainerEvent、WindowEvent、FocusEvent、KeyEvent、MouseEvent
高级事件:基于语义
ActionEvent、AdjustmentEvent、ItemEvent、TextEvent
事件适配器
如果要实现一个监听器类,当继承相应的接口时,就要实现其所有的方法。所以Java提供了一些现有的父类,只需要你去继承就可以了。所谓的适配器主要解决了将一个类的接口转换成目标类的另一个接口。适配器模式就是使得原来由于接口不兼容而不能一起工作的的些类可以在一起工作。
下面是两种不同的方法使用适配器
使用内部类:内部类可以调用外部类的成员方法和变量,包括私有的成员
使用匿名类:也就是此类没有名字。当一个内部类的类声明只是在创建对象时用到,且必须有父类或实现一个接口,才能用匿名类。
最后就是组件的部分
按钮(Button)
复选框(CheckBox)
复选框组
画布(Canvas)
Java awt中的事件监听、组件、布局管理器以及容易的概念的代码在文中都有提及,因为代码有些代码太过于长。所以把重要的部分给截图下来了,如果你看的明白图片中的代码,但是不明白这个代码应该放哪里,这是正常的。如果你是初学者,对于Java中的函数的摆放以及应用还不熟悉。也是从C语言跳到Java,两种不同的书写风格会令你有点混乱。只要你学的更深一点的时候这个对你就简单易懂了。
¥498.00
¥29.00
¥299.00
¥399.00