GUI

来源:互联网 发布:qq smtp服务器发送端口 编辑:程序博客网 时间:2024/06/05 11:50
图形用户界面
*GUI 
-Graphiccal User Interface(图形用户接口)
-用图形的方式,来显示计算机操作的界面,这样更方便更直观
*CLI
-Command line User Interface(命令行用户接口)
-就是常见的Dos命令行操作
-需要记忆一些常用的命令,操作不直观
*AWT和Swing包
-java.awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件。
-javax.swing:在AWT基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。

*事件监听机制:
-事件源 -事件 -事件处理 -事件监听器
事件--如果用户在用户界面执行了一个动作,这会导致一个事件的发生。事件是描述发生了什么的对象。

*事件源对象
-一个类要成为事件源,并不需要实现任何接口或者任何类,但是一个事件源需要保持一个事件监听器的列表。
-事件源拥有注册或删除事件监听器的方法,我们通过这些方法向其注册或者删除事件监听器。
-注册事件监听器的 add---Listener()方法
addComponentListener()
addFocusListener()
addInputMethodListener()
addKeyListener()
addMouseListener()
addMouseMotionListener()
addPropertyChangeListener()
-删除事件监听器的  remove---Listener()方法
removeComponentListener()
removeaddFocusListener()
removeInputMethodListener()
removeKeyListener()
removeMouseListener()
removeMouseMotionListener()

removePropertyChangeListener()


*事件监听对象
-事件监听器对象是当事件发生时被调用的对象,监听器对象根据事件对象内封装的消息,决定如何响应这个事件
-一个对象要称为事件监听器对象,必须实现事件监听器接口
-AWT库中所有的事件监听器接口都是java.util.EventListener接口的子接口
-尽管Swing构件引入了很多的事件监听器接口,但是仍然广泛使用AWT所提供的各种事件接口进行事件处理

-在AWT中所给出的事件监听器接口中,有以下接口声明了多于一个的方法,他们是8个如下:
-CompnentListener
-ContainerListener
-FocusListener
-KeyListener
-MouseListener
-MouseMotionListener
-WindowListener
-HierarchyBoundsListener
-AWT为这些接口提供了相应的适配器类,这些适配器类叫做事件监听适配器类。由于其他的几个接口仅仅声明了一个方法,因此无适配器类。

*语义事件和底层事件
-AWT将事件分为两类:语义(Semantic)事件和底层(Low-Level)事件
-一个语义事件表达了用户所做的事情。比如使用鼠标单击一个按键就是一个语义事件。相应的ActionEvent就是一个语义事件。
-一个底层事件则是组成各种语义事件的单纯事件。比如,鼠标单击事件由一个鼠标键按下事件和一个鼠标键释放事件组成。类似的,调整滚动条是一个语义事件,而拖拽鼠标则是一个底层事件。

下面是AWT中最重要的4个语义事件类:
-ActionEvent:对应按钮点击,菜单选择,列表框选择,在文本框中按回车键等。
-AdjustmentEvent:用户调整滚动条。
-ItemEvent:用户从一组选择框或者列表项中进行选择。
-TextEvent:文本域或者文本框中的内容发生改变。

下面是6个底层事件类:
-ComponentEvent:组件大小改变、移动、显示或者隐藏。
-KeyEvent:键盘上的一个键被按下或者释放。
-MouseEvent:鼠标按键被按下、释放、鼠标移动、或者拖动。
-FocusEvent:组件获得焦点或者是去焦点。
-WindowEvent:窗口被激活、屏蔽、最小化、最大化或关闭。
-ContainerEvent:添加或者删除一个组件。

*焦点事件
-如果某个组件能够接收用户按键,那么该组件就拥有焦点。拥有焦点的组件在显示形式上比其他组件有一些差别:文本框会显示光标;按钮周围会显示一个由虚线组成的矩形框。
-可以捕获丢失的焦点事件来进行输入的合法性检查。如果输入不合法,通过调用requestFocus方法把焦点重新移回到该文本域,提示用户重新输入。

*键盘事件
-KeyListener接口中有三个方法:
public void keyPressed(KeyEvent e)
public void keyReleased(KeyEvent e)
public void keyTyped(KeyEvent e)
-Java对于用户按键的处理过程
当前键盘状态为小写状态,要输入一个大写字母"A",我们的操作过程为:先按住shift键不放,在按下A键,然后松开。整个过程Java会产生五个事件:
-按下Shift键:为VK_SHIFT调用keyPressed方法;
-按下A键:为VK_A调用keyPressed方法;
-键入字符“A”:为字符“A”调用keyTyped方法;
-松开A键:为VK_A调用keyReleased方法;
-松开Shift键:为VK_SHIFT调用keyReleased方法。

*鼠标事件
-MouseListener接口:
mousePressed:鼠标被按下时调用。
mouseReleased:鼠标被释放时调用。
mouseClicked:合并上述两个事件为一次鼠标点击事件。
这三个方法的参数是MouseEvent,通过getX和getY方法,能过得到鼠标点击时的鼠标指针的x和y坐标。通过
getClickCount方法,可以区别是单击操作,还是双击操作。
-MouseMotionListener接口:
mouseMoved:鼠标移动
mouseDragged:用户拖动鼠标
-鼠标形状的设置:
setCursor(Cursor. getPredefinedCursor(Cursor.HAND_CURSOR));

*菜单组件概述
-MenuBar,Menu,MenuItem
-先创建菜单条,在创建菜单,每一个菜单中建立菜单项
-也可以菜单添加到菜单中,作为子菜单。
-通过setMenuBar()方法,将菜单添加到Frame中

*Swing
-Java1.2发布了Swing GUI组件库
-Swing类被放在javax.swing包及其子包中。在Java2平台上,Swing已经称为核心层次的一部分,不再是扩展了,但javax的名字被保留下来了。
-尽管Swing独立于AWT,但它并没有完全取代AWT。Swing只是提供了更好的用户界面组件而已。
-Swing组件除了AbstractButton类之外都以J开头。

*Swing中的容器有两类:
     顶级容器:     一般是一个顶层窗口(框架)
     中间容器:     需要包含在顶层容器中使用的容器
*顶级容器
-JFrame:用于框架窗口的类
     此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带GUI的应用程序通常至少使用一个框架窗口。
-JDialog:用于对话框的类。
-JApplet:用于使用Swing组件的 Java Applet的类
*中间容器:
-JPanel:面板,它是最灵活、最常用的中间容器。
-JScrollPane:与JPanel类似,但还可在大的组件或可扩展组件周围提供滚动条。
-JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。
-JToolBar:按行或者列排列一组组件(通常是按钮)。

*JFrame框架
-是放置其他Swing组件的顶级容器
-JFrame组件用于在Swing程序中创建顶层窗口
-构造函数
JFrame()
JFrame(String Title)
-默认情况下,框架的尺寸是没有实际意义的0X0像素。为了设定合适的框架大小,要调用框架的setSize()方法
-默认情况下,框架在建立时是不可见的。为了显示框架,要调用框架的show()方法
-默认情况下,当用户关闭一个框架时,该框架会隐藏起来,程序不会终止




0 0
原创粉丝点击