请登录
四川成人和教育管理有限公司 - 笔记串讲 - 工学类 - 4747Java语言程序设计(一) - 浏览文章

4747自考Java语言程序设计(一)最新串讲笔记(自考小抄)5

2016/5/31 10:12:480人浏览0评论

第5章            图形界面设计(一)

1. 图形界面设计基础(课本85-89页,领会)

AWTSwing(见课本85-86页)

AWTAbstract Windowing Toolkit,抽象窗口工具包

Swing:与AWT相比——功能更加强大、完善,平台相关性较小

组件和容器(见课本85-86页)

组件( Component

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

容器( Container

容器是可以容纳其他组件的组件,是图形界面的复合元素。

Container类有 add()方法,可以向容器添加组件。

    java.awt.container的成员方法:

public Component add( component comp )

   // 将组件comp添加到当前容器中

ComponentContainerGraphics类是AWT库中的关键类。

事件驱动程序设计基础(见课本85-86页)

1)事件、监视器和监视器注册

Java里,每当某件事发生在一个GUI组件(事件源或源对象)里,会生成一个事件对象(event)并传给为处理该事件而注册的事件监视器(event listener)。

2)实现事件处理的途征

事件处理模型的三个基本要素:

事件源(An event source)

事件对象(An event object)

事件监视器(event listener(s))

事件源(源对象)

可供用户进行交互的GUI组件

事件对象

包装相应的事件

记录事件源以及处理该事件所需要的各种信息

事件对象对应的类一般位于包java.awt.event和包javax.swing.event

事件监视器(事件监听器)

在事件源中注册事件监视器,当有事件发生时,事件源接收事件对象,并交由相应的事件监听器处理

事件监听器对应的接口和适配器类一般位于包java.awt.event和包javax.swing.event

3)事件类型和监视器接口

常用的事件:动作事件(ActionEvent)、项事件(ItemEvent)、列表选择事件(ListSelectionEvent)、文档事件(DocumentEvent

课本88页表5-1

课本88页表5-2

2. 框架窗口(课本89-91页,综合应用)

JFrame的创建

框架(类javax.swing.JFrame)的构造方法:

public JFrame( ) throws HeadlessException

   // 构造一个初始时不可见的Frame

public JFrame( String title ) throws HeadlessException

   //创建一个新的、初始不可见的、具有指定标题的 Frame;参数title指定标题

JFrame的常用成员方法

框架(类javax.swing.JFrame)的一系列用于属性设置的成员方法:

public void setBounds(int x, int y, int width, int height)

   //移动Frame并调整其大小。由 x y 指定左上角的新位置,由 width height 指定新的宽度和高度。单位是像素。

public void setSize( int width, int height )   // 设置Frame的大小

public void setBackground(Color c)       //设置Frame的背景色

public void setVisible( boolean b )

   // 设置Frame是否可见,应当在Frame的属性设置完毕并添加完组件之后调用该方法,使初始不可见的框架变成可见的

public void setTitle(String title)    //Frame的标题设置为指定的字符串

 public void setResizable(boolean resizable)

     // 设置此窗体是否可由用户调整大小(默认为可调整大小)

框架(类javax.swing.JFrame)的其他常用成员方法:

public void pack()    // 以紧凑方式显示Frame

public String getTitle()    //获得窗体的标题

向容器中添加组件:在Swing图形用户界面程序设计中,给顶层容器添加组件的方法一般是先获取顶层容器的内容窗格,再向内容窗格添加组件。

javax.swing.Frame的成员方法:

public Container getContentPane( )   // 返回当前Frame的内容窗格

java.awt.container的成员方法:

public Component add( component comp )   // 将组件comp添加到当前容器中

对于顶层容器,是向其内容窗格添加组件;对于其他容器,则可直接添加组件。

为顶层容器添加组件的另一种方法:建立JPanel对象作为中间容器,将组件添加到这个容器中,再用方法public void setContentPane(Container contentPane)把此中间容器设置为内容面板。

      JPanel contentPane = new JPanel(); // 添加组件到contentPane

      mw = setContentPane(contentPane);  // mw为之前创建的某JFame对象

3. 标签、按钮和按钮事件              (课本91-94页,综合应用)

标签(见课本91-92页)

标签(javax.swing.JLabel)是用于短文本字符串或图像或二者的显示区。标签不对输入事件作出反应。

标签(类javax.swing.JLabel)的构造方法:

public JLabel( )

public JLabel( String text )

public JLabel( String text, int align )

   // 参数text指定标签的文字信息;参数align指定文字在水平方向上的对齐方式。常见对齐方式:javax.swing.JLabel.LEFT(左对齐)、javax.swing.JLabel.CENTER(中对齐)、javax.swing.JLabel.RIGHT(右对齐)

JLabel的常用成员方法:

public void setText( String text )     // 设置标签的文字信息

public void getText( )             //返回该标签所显示的文本字符串

public void setBackground(Color bg)    // 设置标签的背景色,默认为容器的背景色

public void setForeground(Color fg)

    // 设置标签的前景色,即标签上的文字的颜色,默认为黑色

按钮(见课本92-94页):命令式按钮在界面设计中用于激发动作事件。

命令式按钮(类javax.swing.JButton)的构造方法:

public JButton ( )

public JButton ( String text)

JButton的成员方法详见课本92页。

public void addActionListener( ActionListener a )

// 为按钮注册由参数a指定的动作事件监视器

动作事件监视器一般是实现接口java.awt.event.ActionListener的类的实例对象。

接口java.awt.event.ActionListener的定义如下:

     public interface ActionListener extends EventListener {

         public void actionPerformed( ActionEvent e );

     }

动作事件对象

动作事件对象的具体类型为java.awt.event.ActionEvent

java.awt.event.ActionEvent的常用成员方法包括:

public Object getSource( )    // 返回当前事件的事件源

public String getActionCommand( )    // 返回当前动作事件相关的字符串

JButton中定义了成员方法:

public void setActionCommand(String actionCommand)

    //设置此按钮的动作命令

按钮(动作事件)处理程序的基本内容包括:

定义一个类,实现接口ActionListener,即在此类中实现actionPerformed()方法

4. 面板(课本94-96页)

JPanel(见课本94-95页)面板是一种常用容器,常被用作中间容器。

面板(类javax.swing.JPanel)的构造方法:

public JPanel ( )

public JPanel(LayoutManager layout)    //创建具有指定布局管理器的JPanel

使用JPanel的两种途径:

(1) 直接创建JPanel的实例对象,在其中添加组件,再将其放入另一个容器中(如JFrame

(2)定义JPanel类的子类,在其构造方法中向其中添加组件,再通过创建这个子类的实例对象,并将这个对象加入另一个容器中

JPanel的常用成员方法:

public void setPreferredSize( Dimension preferredSize )

// 将面板大小设置为参数preferredSize所指定的尺寸

java.awt.Dimension的构造方法:

public Dimension( int width, int height) //参数width指定宽度,参数height指定高度

public void setBackground( Color bg ) //将面板背景颜色设置为参数bg所指定的颜色

JScrollPane(见课本95-96页):带有滚动条的面板,它也是java.awt.container类的子类,但规定只能向其中添加一个组件。当一个容器的显示区域不足,导致无法同时显示其中的所有组件时,如果让容器带有滚动条,则通过移动滚动条的滑块,就可以看到所有位置上的组件。为容器添加滚动条的工作,可以通过将容器添加到一个JScrollPane中实现。

滚动窗格(javax.swing.JScrollPane)的构造方法:

public JScrollPane( )

    // 可以先创建JScrollPane对象,再用其成员方法setViewportView(Component view)设置需要加上滚动条功能的组件

public JScrollPane( Component view)

   // 参数view指定需要加上滚动条功能的组件,只要组件的内容超过视图大小就会显示水平和垂直滚动条

设置JScrollPane滚动条属性的成员方法:

public void setHorizontalScrollBarPolicy(int policy)

    // 确定水平滚动条何时显示在滚动窗格上。选项有:

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED (水平滚动条需要时才显现)

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER (水平滚动条总是不可见)

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS (水平滚动条总是可见)

public void setVerticalScrollBarPolicy(int policy)

    // 确定垂直滚动条何时显示在滚动窗格上。选项有:

ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED(垂直滚动条需要时才显现)

ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER (垂直滚动条总是不可见)

ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS (垂直滚动条总是可见)

5. 布局设计(课本96-102页,综合应用)

FlowLayout布局(见课本97页)

流布局管理器(java.awt.FlowLayout)是 java.awt.Appletjava.awt.Panel javax.swing.JPanel的默认布局方式。特点:在容器中,从左到右依次排列组件,当组件排满一行时,则从下一行开始继续排列组件。可以设置每行组件的对齐方式为: 左对齐、中间(默认对齐方式)和右对齐。

java.awt.FlowLayout的构造方法:

public FlowLayout( )

public FlowLayout( int align )

public FlowLayout( int align, int hgap, int vgap)

    // 参数hgapvgap)指定同一行相邻两组件之间的水平(竖直)间隙,单位为像素,默认值均为5;参数align指定行对齐方式:java.awt.FlowLayout.LEFT(左对齐)、java.awt.FlowLayout.CENTER(中对齐)、java.awt.FlowLayout.RIGHT(右对齐)

BorderLayout布局(见课本97-98页):边界布局管理器(java.awt.BorderLayout)是 java.awt.Framejava.awt.Dialog javax.swing.Window javax.swing.Frame javax.swing.Dialog的默认布局方式。特点:将容器分成东、西、南、北、中五个区域,分别对应常量:

java.awt.BorderLayout.EAST         (右侧)

java.awt.BorderLayout.WEST        西(左侧)

java.awt.BorderLayout.SOUTH      (底部)

java.awt.BorderLayout.NORTH      (顶部)

java.awt.BorderLayout.CENTER    (中间)

每个区域最多只能容纳1个组件。

java.awt.BorderLayout的构造方法:

public BorderLayout( )

public BorderLayout( int hgap, int vgap )

   // 参数hgap指定同一行相邻两组件之间的水平间距,参数vgap指定相邻两行组件之间的竖直间距,单位均为像素,默认值均为0

GridLayout布局(见课本98-99页):特点,网格布局管理器(java.awt.GridLayout)将容器按行与列等分成相同大小的矩形区域(网格);每个组件占用具有相同宽度和高度的网格;添加组件到网格的顺序: 从左到右,从上到下

java.awt.GridLayout的构造方法:

public GridLayout( )

public GridLayout( int rows, int cols )

public GridLayout( int rows, int cols, int hgap, int vgap )

    // 参数rowscol分别指定网格的行数和列数(注意实际行数和列数的计算),默认值均为1;参数hgapvgap分别指定同一行相邻两组件之间的水平和竖直间距,单位均为像素,默认值均为0

CardLayout布局(见课本100-101页):

特点:卡片布局管理器(java.awt.CardLayout)对组件的排列类似于码扑克牌,新加入的组件放在已加入的组件的上面,每次一般只能看到一个组件;可以从上到下依次取出下一个组件,而当前组件变为最后一个组件;可以直接翻到某个组件,而组件之间前后排列顺序保持一致。

java.awt.cardLayout的构造方法:

public CardLayout( )

public CardLayout(int hgap, int vgap )

      // 参数hgapvgap分别指定组件与容器边界之间的水平和竖直间隙,单位均为像素,默认值均为0

CardLayout布局下向容器添加组件:使用类java.awt.container的成员方法:

public void add( component comp, Object contraints )

   // 将组件comp添加到当前容器中,参数contraints的实际类型为String,指定组件comp的名称。新加入的组件放在已加入的组件的上面

java.awt.CardLayout提供了成员方法:

public void show( Container parent, String name

   // 直接翻转到指定组件,但不改变组件间的前后排列顺序。参数parent指定要在其中布局的父容器;参数name指定要翻转到的组件的名称。

public void first( Container parent )     // 翻转到容器parent的第一个组件

public void last( Container parent )     // 翻转到容器parent的最后一个组件

public void next(Container parent)//翻转到容器parent中当前显示组件的后一个组件

public void previous(Container parent)

//翻转到容器parent中当前显示组件的前一个组件

Null布局与setBounds方法(见课本100-101页)

可以把一个容器的布局设置为null,即空布局。而采用组件的setBounds()方法设置其大小和在容器中的位置。

java.awt.Component的成员方法:

    public void setBounds(int x, int y, int width, int height)

    // 设置组件位置及大小。由 x y 指定组件的左上角在容器中的位置坐标,由 width height 指定组件的宽和高。

java.awt.Component还有成员方法:

public Dimension getSize( )

    // Dimension 对象的形式返回组件的大小。Dimension 对象的 height 字段包含此组件的高度,而 Dimension 对象的 width 字段则包含此组件的宽度。

布局管理器类(如FlowLayoutBorderLayoutGridLayoutCardLayout等)有成员方法:

public void setHgap(int hgap)   //将组件之间的水平间距设置为指定值

public void setVgap(int vgap)   //将组件之间的垂直间距设置为指定值

6. 文本框和文本区                         (课本102-107页,综合应用)

文本框(见课本102-103页):文本框(javax.swing.JTextField)可用来编辑单行文本。文本框(类javax.swing.JTextField)的构造方法:

public JTextField ( )

public JTextField ( String text )

public JTextField ( int columns)

public JTextField ( String text, int columns)

    // 参数text指定在文本框中显示的初始文本信息;参数columns为非负整数,指定文本框的宽度

java.swing.JTextField

public String getText( )   // 获取文本框的文本信息

public void setText( String t )   // 设置文本框的文本信息

public void setEditable( boolean b )

   // 设置文本框是否可编辑,btrue则可编辑,为false则不可编辑。

文本框(JTextField)可以触发动作事件,其类定义中含有成员方法

public void addActionListener( ActionListener a )

// 为文本框注册由参数a指定的动作事件监视器

文本区(见课本103-104页):可以编辑多行文本信息的文本区域;文本区域不能自动进行滚屏处理,可以将文本区域添加到滚动窗格(JScrollPane)中,从而实现文本区域自动添加滚动条的功能。

文本区(类javax.swing.JTextArea)的构造方法:

public JTextArea ( )

public JTextArea ( String text )

public JTextArea ( int rows, int columns )

public JTextArea ( String text, int rows, int columns )

   // 参数text指定在文本区域中显示的初始文本信息;参数rows指定显示的行数;参数columns指定显示的列数

java.swing.JTextArea的成员方法:

public String getText( )   // 获取文本区的文本信息

public void setText( String t )   // 设置文本区的文本信息

public void setLineWrap( boolean wrap )

   // 设置文本区的换行策略。如果设置为 true,则当行的长度大于所分配的宽度时,将换行。如果设置为 false,则始终不换行。

实现文本区域自动添加滚动条,只需使用滚动面板(javax.swing.JScrollPane)的构造方法:

public JScrollPane( Component view)  // 参数view指定需要加上滚动条功能的组件

例如:

      JTextArea ta = new JTextArea( );

      JScrollPane jsp = new JScrollPane(ta);

数据输入和输出(见课本104-107页)

GUI中,常用文本框和文本区实现数据的输入和输出。例5.9、例5.10


关键字:
网友评论