Java 18


GUI事件处理

委托事件模型
事件(Event):用户在GUI组件上进行的操作,如鼠标单击、输入文字、关闭窗口等。
在JDK中定义了多种事件类,用以描述GUI程序中可能发生的各种事件
约定:组件在与用户交互时,遇到特定操作则会触发相应的事件,即自动创建事件类对象并提交给Java运行时系统


事件源(Event Source):能够产生事件的GUI组件对象,如按钮、文本框等。
事件处理方法(Event Handler):能够接收、解析和处理事件类对象,实现与用户交互功能的方法。
事件监听器(Event Listener):调用事件处理方法的对象。
系统在接受到事件类对象后,立即将其发送给专门的事件处理对象(监听器),该对象调用其事件处理方法,处理先前的事件类对象,进而实现预期的事件处理逻辑。


事件类

监听接口
JDK的java.awt.event包中定义了一系列的事件监听器接口,在这些接口中分别定义了各种类型的Java GUI 事件的处理方法,只有实现了这些接口的类对象才有资格作监听器,去处理相应类型的事件。 
事件监听器类型和对应的事件处理方法都是事先约定好的
所有事件处理方法的返回值类型均为void
 
事件适配器
为简化程序员的编程负担,JDK中针对大多数事件监听器接口提供了相应的实现类(事件适配器Adapter),在适配器中,实现了相应监听器接口的所有方法,但不做任何处理,即只是添加了一个空的方法体。

程序员在定义监听器类时就可以不再直接实现监听接口,而是继承事件适配器类,并只重写所需要的方法即可。

使用适配器类的优点:不用实现WindowListener接口中所有的抽象方法,需要哪个方法,重写哪个方法即可,使开发者得以解脱。
但需注意:适配器类并不能完全取代相应的监听器接口,由于Java 单继承机制的限制,如果要定义的监听器类需要同时处理两种以上的GUI事件,则只能直接实现有关的监听器接口,而无法只通过继承适配器实现。

内部类和匿名类在GUI 事件处理中的作用
内部类
在Java GUI 事件处理中,经常采用内部类来定义监听器类,这是因为监听器类中封装的业务逻辑具有非常强的针对性,通常没有重用价值。而且作为内部类的监听器对象可以直接访问外部类中的成员,这可以提供很大的便利。

匿名类
addMouseMotionListener(new MouseMotionAdapter(){
 public void mouseDragged(MouseEvent e){
  txtDisplay.setText("鼠标位置"+e.getPoint());
 }
});

多重监听
由于事件源可以产生多种不同类型的事件,因而可以注册多种不同类型的监听器,但是当事件源发生了某种类型的事件时,只触发事先已就该种事件类型注册过的监听器。

事件源组件和监听器对象的对应关系:
针对同一个事件源组件的同一种事件也可以注册多个监听器。
针对同一个事件源组件的多种事件也可以注册同一个监听器对象进行处置。只是这要求监听器对象是一个“多面手”,即有能力处理各种不同类型的事件
同一个监听器对象可以被同时注册到多个不同的事件源上。

Color类
公共静态属性:共13个静态属性,分别代表13种不同的颜色常量。
构造函数
public Color(int r,int g,int b):以整数形式给出红、绿、蓝三个分量的值,每个分量的范围:0~255
public Color(float r,float g,float b):r、g、b均为单精度浮点数。取值范围为0.0f~1.0f
 public Color(int rgb):rgb的16~23位:红色分量;0~7位:蓝色分量,8~15位:绿色分量。

常用方法
     public int getRed():返回颜色对象的红色分量值
     public int getGreen():返回颜色对象的绿色分量值
     public int getBlue():返回颜色对象的蓝色分量值

设置颜色
设置组件的背景色和前景色:
public void setBackground(Color c):设置背景颜色
public void setForeground(Color c):设置前景颜色

字体类Font
java.awt包中提供了一个Font类用于构造字体对象,其中还提供了和字体相关的一些列的属性和方法。
公共静态属性
BOLD(粗体)、ITALIC(斜体)、PLAIN(普通)
构造函数
public Font(String name,int style,int size);
name:指定字体名称; style:制定字体的外观;size:指定字体大小。单位为点(一个点=1/72英寸)

例:Font font1=new Font(“宋体”,Font.BOLD,50);
Font类中常用的方法
public String toString()--返回字体的描述性字符串。
public int getStyle()--返回当前字体风格的整数值
public int getSize()--返回当前字体大小的整数值
public int String getName()--返回当前字体的名称
public String getFamily()--返回当前字体家族名称
public boolean isPlain()--当前字体是否是普通的风格
public boolean isBold()--当前字体是否是加粗的风格
public boolean isItalic()--当前字体是否是倾斜风格

java.awt.Font类用于在GUI 开发中设置组件的上显示文字的字体,相应的方法在java.awt.Component 类中定义,具体格式为:
public void setFont(Font font)----设置字体
public Font getFont()----返回当前字体对象

标签和按钮
标签Label:用于显示一行文本提示信息。它不能响应鼠标事件。
构造方法
publicc Label();
public Label(String str);
public Label(String str,int alignment)

参数alignment的取值有三种,用于指定标签中文本的对齐方式:
Label.LEFT,文本居标签组件左对齐
Label.CENTER,文本居中对齐
Label.RIGHT,文本居标签组件右对齐

其它常用方法
public String getText();
public void setText(String str);
public void setAlignment(in alignment)
public void setBackground(Color c);
public void setForeground(Color c);

按钮Button:用于接收用户的点击操作并触发相应的处理逻辑。
构造方法
public Button();
public Button(Stirng label);

触发的事件:当用户用鼠标点击按钮时触发ActionEvent事件,注册事件监听的方法:
public void addActionListener(ActionListener l)

文本组件
所谓文本组件是指能够显示和编辑文本信息的组件。
文本框TextField:用于接收/编辑单行文本信息
构造方法
public TextField();
public TextField(int columns);
public TextField(String str);
public TextField(String str,int columns);
常用方法
public String getText(); p
ublic void setText(String str)
public String getSelectedText();
public void setEchoChar(char c);
public void setEditable(Boolean b);

触发事件
在TextField组件中按下回车键时,可以触发ActionEvent事件,因此在TextField组件上可注册ActionListener监听器,以关联所需的处理逻辑。

文本区TextArea:用来显示和编辑多行、多列文本信息,当显示文本超出了文本区的大小自动出现水平和垂直滚动条
构造方法
public TextArea();
public TextArea(int rows,int columns);
public TextArea(String str,int rows,int columns);
public TextArea(String str,int rows,int columns,int scrollbar);

常用方法
public String getText();
public void setText(String str);
public void append(String str);
public int getCaretPosition();
public void insert(String str,int pos);
public String getSelectedText();
public int getSelectionStart();
public int getSelectionEnd();
public void replaceRange(String str,int start,int end);
触发事件:TextEvent事件 、MouseEvent事件

选择组件
选择组件是指专门用于从多个条目中进行单选或多选操作的AWT组件。
复选框和单选按钮
复选框提供两种状态:选中|未选中。java.awt 包中的Checkbox类用于建立复选框。
构造方法
public Checkbox();
public Checkbox(String str);
public Checkbox(String str,Boolean b);
public Checkbox(String str,Boolean b,CheckboxGroup g);

其他方法
public Boolean getState();
public setState(boolean b);
public getLabel();
public setLabel(String s);
触发事件
选择或取消选择一个复选框会触发选项事件ItemEvent,对应的监听接口ItemListener,事件处理方法为:
public void itemStateChanged(ItemEvent e);
注册监听/删除监听的方法
public void addItemListener(ItemListener);
public void removeItemListener(ItemListener);

下拉列表框Choice 用户可以在下拉列表框中看到第一个选项和它旁边的箭头按钮,当用户单击箭头按钮时,选项列表打开。
构造方法
public Choice();
其他方法
public void add(String name);
public void insert(String name ,int index);
public void remove(String  name);
public void remove(int  index);
public void removeAll();

其他方法
public void select(String  name);
public void select(int  index);
public int getItemCount();
public int getSelectedIndex();
public String getSelectedItem();
触发事件
当用户在下拉列表框中选中某个列表项时就触发ItemEvent选项事件,监听接口:ItemListener。注册和删除监听的方法:
public void addItemListener(ItemListener l);
public void removeItemListener(ItemListener l);

列表框List
包含如干列表项,用户可以选择列表框中的一项或多项。当列表框中的列表项数超过了列表框的高度,则列表框自动增加垂直滚动条,用户可以通过滚动的方式选择列表项。
构造方法
public List();
public List(int n);
public List(int n,boolean b);
常用方法
其他方法
public int getSelectedIndex();
public String getSelectedItem();
public int[] getSelectedIndexes();
public String[] getSelectedItems();
触发事件
当用鼠标单击列表框的某个列表项后,触发ItemEvent事件;
当用鼠标双击某个列表项后,触发ActionEvent事件。
选择组件的两种不同使用方式:
将若干选择组件组成信息提交表单,然后整体提交和处理。
在某个选择组件的选择状态发生变化时,立即进行响应和处理。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值