java基础整理10--GUI

AWT的基础知识:

 GUI全称是Graphical User Interface,即图形用户界面。

 JDK中提供了AWTSwing两个包,用于GUI程序的设计和开发。

 GUI组件可以分为两大类:基本组件和容器,分别是java.awt.Componentjava.awt.Container的直接或间接子类。

 程序的GUI部分由AWT线程管理。

 

 

事件处理机制:

  事件:用户对组件的一个操作,称之为一个事件。

  事件源:发生事件的组件就是事件源。

  事件处理器:某个Java类中的负责处理事件的成员方法。

事件分类:

  按产生事件的物理操作和GUI组件的表现效果进行分类:MouseEvent   WindowEvent  ActionEvent

  按事件的性质分类: 低级事件   语义事件(又叫高级事件)

事件监听器:

 一个事件监听器对象负责处理一类事件。

 一类事件的每一种发生情况,分别由事件监听器对象中的一个方法来具体处理。

 在事件源和事件监听器对象中进行约定的接口类,被称为事件监听器接口。

 事件监听器借口类的名称与事件类的名称是相对应的,例如,MouseEvent事件类的监听器接口名为MouseListener

 

事件适配器:

  JDK中也提供了大多数事件监听器接口的最简单的实现类,称之为事件适配器(Adapter)类。

  用事件适配器来处理事件,可以简化事件监听器编写。

修改组件的默认事件处理方式:

  只有在一个组件上注册了某种事件的事件监听器对象后,组件才会产生相应的事件对象。

  默认的processEvent方法调用相应的processXxxEvent方法。

  调用enableEvents((long eventsToEnable))方法,可以在即使没有注册事件监听器的情况下,组件也能够对某些类型的事件进行响应和产生相应的事件对象。

编程实例:在一个窗口上显示一个按钮,一旦鼠标移动到这个按钮上时,按钮就移动到了其他位置,这样,鼠标就永远无法点击到这个按钮。

 

 

图像显示:

 使用Graphics.drawImage(Image img,int x,int y, ImageObserve observer)方法显示图像。

 使用 Component.getToolkit.getImage(String path)语句获得Image实例对象。

 

 

双缓冲技术:

 Component.createImage方法创建内存Image对象。

 在Image对象上进行绘制的结果就成了一幅图像。

 在Image对象上执行与组件表面同样的绘制,Image对象中的图像是组件表面内容的复制,当组件重画时,只需将内存中的Image对象在组件上画出。

  

 

Canvas:

 Canvas是具有最基本和最简单的GUI功能的组件。

 Canvas代表屏幕上的一块空白的矩形区域,程序能够在这个部件表面绘图,也能够捕获用户的操作,产生相应的事件。

 当要设计自定制的具有GUI功能的组件类时,继承Canvas将会大大简化编程难度。

 

 

菜单:

 一个完整的菜单系统由菜单条、菜单和菜单项组成。

 Java中与菜单相关的类主要有:MenuBar(菜单条)、Menu(菜单)、Menultem(菜单项)。

 

 

Container

 Container类是所有容器类的父类,Container.add方法用于将组件添加到容器中。

 Container也是Component的子类,因此也可以作为组件增加到其它容器上。

DialogFileDialog类:

  Dialog类用于产生对话框。

  模态对话框和非模态对话框。

  Dialog类的两个常用构造方法:

public DialogFrame ownerString title);

public DialogFrame ownerString titleboolean modal

  FileDialog类是Dialog类的一个子类,能够产生标准的文件存取对话框。

 

 

Checkbox

 Checkbox类用来建立单选按钮和多选按钮(也叫复选框)。

 创建多选按钮,只需要使用构造函数:

  CheckboxString labelboolean state

 创建单选按钮,需要使用构造函数:

  CheckboxString labelboolean stateCheckboxGroup group

 单选按钮和多选按钮的语义事件为ItemEvent,对应的监听器接口为ItemListener,该接口中只有一个itemStateChanged方法。

 

 

Choice

  Choice类用来制作单选下拉列表框。

  Choice类的语义事件为ItemEvent,对应的监听器接口为ItemListener,该接口中只有一个itemStateChanged方法。

 

PanelScrollPane类:

  Panel类是一个容器类,用于产生一种特殊的空白面板,可以容纳其他的组件,但不能独立存在。

  ScrollPane类是一种容器类,用于产生滚动窗口,通过滚动条在一个较小的容器窗口中显示较大的子部件。

 

 

布局管理器:

  一个容器中的各个组件之间的位置和大小关系就称之为布局。

  Java语言提供了布局管理器来管理组件在容器中的布局,而不是直接使用位置坐标来设置各个组件的位置和大小。

  AWT中的布局管理器类:BorderLayout  FlowLayout  GridLayout  CardLayout GridBagLayout

  GridLayout布局管理器将容器划分成若干行列的网络,在容器上添加组件时,它们会按从左到右、从上到下的顺序在网格中排列。

  在GridLayout的构造方法中,需要指定在容器上划分的网格的行、列数。

  CardLayout布局管理器能够实现将多个组件放在同一容器区域内的交替显示,相当于多张卡片摞在一起,在任何时候都只有最上面的一个可见。

 

 

取消布局管理器:

  调用Container.setLayout(null)方法取消布局管理器设置,在这种情况下,可以调用Component.setBounds方法来用绝对坐标设置容器上的每个组件的大小和位置。  

  不使用布局管理器将会给程序带来一个潜在的问题,当容器大小改变时,所有组件仍保持原来的位置和大小,将导致整个程序界面比较“难看”。

 

 

SwingJFC

  所有的Swing组件,位于javax.swing包中,它们是构筑在AWT上层的GUI组件,Swing组件是JComponent类的子类,JComponent又是java.awt.Container的子类。

  为保证可移植性,Swing完全用Java语言编写。

  Swing提供了比AWT更多的组件库,例如,JTable,JTree,JComboBox

  Swing也增强了AWT中原有组件的功能,例如,与AWT中的Button对应的Swing组件是JButton

  JFCjava Foundation Class)是指Sun对早期的JDK进行扩展的部分,集合了Swing组件和其他能简化开发的API类,包括Swingjava 2Daccessibilityinternationalization

 

 

JFrame

 JFrame是与AWT中的Frame相对应的Swing组件。

 JFrame上面只能有一个唯一的组件,这个组件为JRootPane,调用JFrame.getContentPane()方法可获得JFrame中内置的JRootPane对象。

 应用程序不能直接在JFrame实例对象上增加组件和设置布局管理器,而应该在JRootPane对象上增加子组件和设置布局管理器。

 调用JFramesetDefaultCloseOperation方法,可以设置单击窗口上的关闭按钮时的事件处理方式,例如,当设置值为JFrame.EXIT_ON_CLOSE时,单击JFrame窗口上的关闭按钮,将直接关闭JFrame框架窗口并结束程序运行。

 

 

JScrollPane

 JScrollPane是与AWT中的ScrollPane相对应的Swing组件。

 最基本的JScrollPane由水平和垂直方向上的JScrollBar、以及一个JViewport组成。

 调用JScrollPane.getViewport方法,可以获得代表滚动窗口中的视图区域的JViewport对象。

 调用JViewport.setView方法,可以将滚动窗口中要显示的内容作为子组件增加到JViewport

  

 

Swing中的标准对话框:

  JOptionPane类提供了若干个showXxxDialog静态方法,可用来产生简单的标准对话框。

  showConfirmDialogComponent parentComponent,Object message,String title,int optionType,int messageType)中的每个参数的意义。

 

JFileChooser类专门用来实现文件存取对话框。

 

 

BoxLayout布局管理器:

 

  BoxLayout是在Swing中新增加的一种布局管理器,它允许多个组件全部垂直摆放或全部水平摆放。

 

学习和开发GUI程序的建议:

   重在掌握GUI程序的一些基本原理和开发过程,通过学习AWT组件可以更容易掌握GUI程序的基本原理和开发过程,但在GUI程序开发中,应尽量使用Swing组件。

   查阅JDK文档中的Swing包,通读一下其中所包含的组件,以了解Swing提供了哪些GUI组件,但不必去仔细阅读每个组件的具体使用帮助。

   只在要用到某个GUI组件时,才有必要仔细阅读这个组件的具体使用帮助。如果要快速掌握某个新遇到的组件的用法,最好是能够找到并参阅该组件的例子程序。

   在JDKdemo程序目录中,或是《Java指南》(可从SUN公司的网站上下载,英文名The Java Tutorial)中,都能找到某些组建的应用范例。

你可能感兴趣的:(java学习整理)