《组件及事件处理》PPT课件.ppt_第1页
《组件及事件处理》PPT课件.ppt_第2页
《组件及事件处理》PPT课件.ppt_第3页
《组件及事件处理》PPT课件.ppt_第4页
《组件及事件处理》PPT课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十一章 组件及事件处理,11.0 GUI简介,现在图形用户界面已广泛应用,一个应用软件没有良好的GUI(Graphic User Interface)是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的组件。 Java构建GUI的组件主要有AWT组件和Swing组件,Swing组件是在AWT组件基础之上发展而来的,并且是当前应用最广泛的GUI组件 。,11.0.1 AWT组件,当Java早期发布的时候,它包含了一个抽象窗口工具(Abstract Windowing Toolkit,简称AWT)库,用来构建图形用户界面应用程序。 AWT提供一套丰富的工具,可

2、以建立平台独立、容易使用的图形用户界面,包含了许多类来支持GUI 设计。,11.0.2 Swing组件,Java在1998年5月发布的JFC(Java Foundation Classes,Java基础类库)包含了一个新的图形用户界面开发包。这个新的图形用户界面组件叫做Swing组件,它是对AWT的升级。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。,11.1 Java Swing概述,在学习GUI 编程时,必须很好地理解掌握两个概念:容器(Container)和组件(Component)。 容器

3、是用来组织其它界面成分和元素的单元。一个应用程序的图形用户界面首先对应于一个复杂的容器,这个容器将再进一步包含它的界面成分和元素,依次类推就构成一个复杂的图形界面系统。 组件就是一个按照一定规范编写的特殊的类,它有自己特定的功能并可作为一个单独的部件添加到程序中。,Java把由Container的子类或间接子类创建的对象称为一个容器。容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。 可以向容器添加组件。JComponent 类提供了一个public 方法add(JComponent com ),一个容器可以调用这个方法将组件添加到该容器中。 容器调用removeAll

4、( )方法可以移掉容器中的全部组件调用remove(JComponent c)方法可以移掉容器中参数指定的组件。 每当容器添加新的组件或移掉组件时,应当让容器调用validate( )方法,以保证容器中的组件能正确显示出来。,11.2 11.3 各组件简介,1、 JFrame JFrame 类是java.awt 包中Frame 类的子类。当需要一个窗口时,可使用JFrame 或其子类来创建。窗口是一个容器,可以向窗口添加组件。 注意:不能将一个窗口添加到另一个窗口。 JFrame常用方法: JFrame( ) JFrame(String s),2、 JTextField类 javax.swin

5、g 包中的JTextField类是专门用来建立文本框的,即JTextField创建的一个对象就是一个文本框。文本框基本方法 JTextField( ) JTextField(int x) public void setText(String s) public String getText( ),3、 JTextArea javax.swing 包中的类JTextArea 类是专门用来建立文本区的,即JTextArea创建的一个对象称做一个文本区。 文本区可以输入多行的文本。JTextArea类有下列主要方法: JTextArea( ) JTextArea(String s,int x,int

6、 y) public void setText(String s) public String getText( ),4、JButton javax.swing 包中的JButton类是专门用来建立按钮的,即JButton 类创建的一个对象就是一个按钮。JButton类有下列常用的方法: JButton( ) public void setText(String s) public String getText( ),5、JLabel 标签的功能是只显示文本,不能动态地编辑文本。JLalel 类的实例就是一个标签。JLabel类的常用方法: JLabel( ) public void setT

7、ext(String s) public String getText( ),6、JCheckbox javax.swing 包中的JCheckbox类用来建立复选框。复选框提供两种状态,一种是选中,另一种是未选中。 复选框通常是一个矩形框,当选择某个选择框后,里面就有了个对号。JCheckBox类有下列常用方法: public JCheckBox ( ) public void setText(String s) public boolean isSelected( ) public void setSelected(boolean f) public String getText( ),7

8、、常用容器 JPanel JScrollPane JSplitPane JLayeredPane 8、常用布局设置布局setLayout(布局对象) FlowLayout BorderLayout CardLayout GridLayout null,例11.3 public class Example11_3 public static void main(String args) ComponentInWindow win=new ComponentInWindow(); win.setBounds(100,100,310,260); win.setTitle(常用组件); ,import

9、 java.awt.*; import javax.swing.*; public class ComponentInWindow extends JFrame JTextField text; JButton button; JCheckBox checkBox1,checkBox2,checkBox3; JRadioButton radio1,radio2; ButtonGroup group; JComboBox comBox; JTextArea area; public ComponentInWindow() init(); setVisible(true);,setDefaultC

10、loseOperation(JFrame.EXIT_ON_CLOSE); void init() setLayout(new FlowLayout(); add(new JLabel(文本框:); text=new JTextField(10); add(text); add(new JLabel(按钮:); button=new JButton(确定); add(button); add(new JLabel(选择框:); checkBox1 = new JCheckBox(喜欢音乐); checkBox2 = new JCheckBox(喜欢旅游); checkBox3 = new JCh

11、eckBox(喜欢篮球); add(checkBox1); add(checkBox2); add(checkBox3);,add(new JLabel(单选按钮:); group = new ButtonGroup(); radio1 = new JRadioButton(男); radio2 = new JRadioButton(女); group.add(radio1); group.add(radio2); add(radio1); add(radio2); add(new JLabel(下拉列表:); comBox = new JComboBox(); comBox.addItem(

12、音乐天地); comBox.addItem(武术天地); comBox.addItem(象棋乐园); add(comBox); add(new JLabel(文本区:); area = new JTextArea(6,12); add(new JScrollPane(area); ,(1)事件源,能够产生事件的对象都可以成为事件源。 如文本框、按钮、下拉式列表等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。,在学习处理事件时,必须很好地掌握事件源、监视器、事件处理接口这三个概念。,11.4 处理事件,2监视器,监视器负责对事件源进行监视,是对发生的事件作出

13、处理的对象。事件源通过调用相应的方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是: addActionListener(监视器对象); 3处理事件的接口 Java规定为了让监视器对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出该接口中所有方法的方法体,那么当事件源发生事件时,监视器就自动调用执行被类实现的某个接口方法。,java.awt.event包中提供了许多事件类和处理各种事件的接口。对于文本框这个接口的名字是ActionListener,这个接口中只有一个方法: public void actionPerformed(Actin

14、Event e) 当在文本框中输入字符并按Enter键时,java.awt.event包中的ActionEvent类自动创建一个事件对象,并将它传递给actionPerformed(ActionEvent e)方法中的参数e,监视器将自动调用方法: actionPerformed(ActionEvent e) 对所发生的事件做出处理。,将对象上的事件处理总结如下 : Java 事件处理就是基于这种授权模式,即发生相应事件的事件源对象,比如sourceObjcet,通过调用相应的方法: sourceObjcet.addXXXListener(监视器); 将某个对象作为自己的监视器。 创建监视器对

15、象的类必须实现相应的事件接口: class A implements XXXListener 当事件源发生事件时,监视器将调用接口中相应的方法作出处理。,常用事件 ItermEventItermListener DocumentEventDocumentListener MouseEventMouseListener、 MouseMotionListener FocusEventFocusListener,例11.5 public class Example11_5 public static void main(String args) WindowActionEvent win=new W

16、indowActionEvent(); win.setBounds(100,100,310,260); win.setTitle(处理ActionEvent事件); ,import java.awt.event.*; public class ReaderListen implements ActionListener public void actionPerformed(ActionEvent e) String str=e.getActionCommand(); System.out.println(str+的长度:+str.length(); import java.awt.*; im

17、port javax.swing.*; public class WindowActionEvent extends JFrame JTextField text; ReaderListen listener; public WindowActionEvent() init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,例11.12 public class Example11_12 public static void main(String args) WindowPolice win = new

18、 WindowPolice(); import java.awt.*; import javax.swing.*; import java.awt.event.*; public class WindowPolice extends JFrame implements ActionListener JTextField text1,text2; public WindowPolice() init(); setBounds(100,100,350,150); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,v

19、oid init() setLayout(new FlowLayout(); text1=new JTextField(10); text2=new JTextField(10); text1.addActionListener(this); /WindowPolice类的实例(当前窗口)做监视器 add(text1); add(text2); text1.addActionListener(new ActionListener() /匿名类实例做监视器 public void actionPerformed(ActionEvent e) String str=text1.getText();

20、 if(str.equalsIgnoreCase(Exit) System.exit(0); ); ,public void actionPerformed(ActionEvent e) String str=text1.getText(); int n=0,m=0; try n=Integer.parseInt(str); m=n*n*n; text2.setText(+m); catch(Exception ee) text2.setText(请输入数字字符); text1.setText(null); ,11.6 对话框,(1)消息对话框 应用程序在进行一个重要的操作动作之前,最好能弹出

21、一个消息对话框。可以用javax.swing包中的JOptionPane类的类方法: public static void showMessageDialog( Component parentComponent,String message, String title,int messageType),例11.14 import java.awt.event.*; import java.awt.*; import javax.swing.*; class Dwindow extends JFrame implements ActionListener JTextField inputNum

22、ber; JTextArea show; Dwindow(String s) super(s); inputNumber=new JTextField(22); inputNumber.addActionListener(this); show=new JTextArea(); add(inputNumber,BorderLayout.NORTH);,add(show,BorderLayout.CENTER); setBounds(60,60,300,300); setVisible(true); validate(); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e) boolean boo=false; if(e.getSource()=inputNumber) String s=inputNumber.getText(); for(int i=0;is.length();i+), char c=s.charAt(i); if(!(Character.isDigit(c) boo=true; if(boo=true) JOptionPane.showMessageD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论