java图形界面程序设计补充讲稿

上传人:ch****o 文档编号:163469245 上传时间:2022-10-21 格式:DOC 页数:31 大小:148.01KB
返回 下载 相关 举报
java图形界面程序设计补充讲稿_第1页
第1页 / 共31页
java图形界面程序设计补充讲稿_第2页
第2页 / 共31页
java图形界面程序设计补充讲稿_第3页
第3页 / 共31页
点击查看更多>>
资源描述
图形界面程序设计Part I:界面设计使用图形组件类和容器类进行GUI设计时,需要引入相应的包或者类。在Java 中,能够实现图形用户界面的类库有两个:java.awt 和javax.swing。前者称为抽象窗口工具库AWT(Abstract Windows Toolkit),后者是Java 基础类库JFC(Java Foundation Classes)的一个组成部分,它提供了一套功能更强、数量更多、更美观的图形用户界面组件。Swing 组件名称和AWT 组件名称基本相同,但以J 开头,例如AWT 按钮类的名称是Button,在Swing 中的名称则是JButton。在java中,AWT包中的类是用来处理图形的最基本的方式,它是Sun公司早期所推出和使用的图形组件包,其中的组件包含基本GUI组件类、容器类、布局管理类,事件处理类和基本图形类这五种。AWT包中的组件被认为是重量级组件,AWT在实际运行中是调用所在平台的图形系统,它们依赖于本地系统来支持绘图与显示,其运行速度慢效果差,系统相关性较强。在1998年Sun Microsystem推出JDK1.2版本时,新的javax.Swing包被增加到java的基础类库中。Swing包可以认为是AWT包的升级。它不仅拥有几倍于AWT包的用户界面组件,而且同样的组件,Swing包中的组件往往可设置属性更多,功能更强大丰富。例如Swing包中按钮(Button)的功能较AWT包中的按钮功能更加强大,包括给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还可以给按钮加入图片做背景。Swing采用MVC(模型-视图-控制)的设计范式,使程序员可以根据不同的操作系统来选择不同的外观。Swing组件完全是用Java代码实现的,可以跨平台,使用Swing组件的程序在Mac、Windows或Unix平台上的观感都一样。Swing组件通常被称为轻量级组件。程序设计过程中最好不要混用Swing组件和AWT组件,虽然有时候也可以同时用,但有可能在视觉效果和响应上造成不稳定隐患。AWT包中常用的顶层容器为Frame、Dialog、Applet,中间层容器为Panel(中间层容器是一种可以放到顶层容器上的组件,它可以把顶层容器进行进一步的区域划分以设计所需格局的界面)。常用的普通组件有Button、TextField、TextArea、Label、List等。Swing包中的组件分类主要为:(1)顶层容器:JFrame、JApplet、JDialog。(2)中间层容器:JPanel、JScrollPane、JSplitPane、JToolBar。(3)其它基本组件:JButton、JList、JTextField等。关于布局,其实每种容器都有默认的布局,当设计者没有指定使用另外的布局时,放到它上面的组件就会按默认布局方式摆放。在AWT和Swing中都可对容器设置布局,都是调用容器对象的setLayout方法。布局有几种,这里作简单说明,具体请大家从示例程序的运行以及JDK API文档中查阅这些布局类的说明文档来体会:(1)FlowLayout布局:顺序布局,有时又称流式布局。使用该布局时,容器上的元素会按容器显示时的大小,按照从左到右、从上倒下的一行一行摆放下去。(2)BorderLayout布局:边界布局。它可以把容器分为东西南北中5个方位,可以指定某个组件在哪个方位(但注意并非一定要有5个组件摆上去,不足5个也可指定位置摆放)。(3)GridLayout布局:网格布局。可以指定容器上的元素按几行几列的位置顺序摆放。(4)CardLayout布局:卡片布局。使用该布局的容器可放置多个组件,但同一时刻只能显示其中一个,就像一叠叠整齐的纸牌中每次只能最上面一张一样。可以指定哪个组件被显示。(5)null布局:空布局。空布局并非没有布局,而是容器被设置为这种布局以后,放到它上面的每个组件就可以通过setBounds(int a,int b,int width,int height)来设置其具体的位置。(6)另外还有BoxLayout(盒式布局)、GridBagLayout(网格包布局)等不常用布局。 在具体的程序设计时,上述每一种布局都对应是一个类,用它们定义出来的对象作为容器对象的setLayout方法的参数,就可以把容器设置成该参数所对应的布局了。仔细阅读、体会、运行和模仿学习后面的多个例子程序(注意代码注释中所提示的各种细节问题),我们可以最后再次总结出“界面设计”的步骤:(1)定义顶层容器对象。 (2)用容器对象的setLayout方法给容器设置一种布局。 (3)定义普通图形组件。 (4)调用容器对象的add方法将普通图形组件添加到容器上。 其中步骤(1)和(3)一般放在图形界面程序类的成员变量声明部分。(2)和(4)一般放在类的构造函数部分。 最后在main函数中生成图形界面程序类的实例运行,显示出界面来。 /* 例子3.1,关于容器Frame的使用。*/import java.awt.Frame;public class FrameApp public static void main(String args) Frame frame=new Frame(); /定义一个Frame容器对象frameframe.setSize(200,100);frame.setVisible(true); /注意Frame对象默认是不可见的,尝试注释掉此句,你会发现看 /不到运行结果的窗口出现。/* * 例子3.2,关于容器JFrame的使用。 同上例。 */import javax.swing.JFrame;public class JButtonApp public static void main(String args) JFrame jframe = new JFrame(); / 定义一个JFrame容器对象jframejframe.setSize(200, 100);jframe.setVisible(true);/ 注意JFrame对象默认是不可见的,若注释掉此句,你会发现看/ 不到运行结果的窗口出现。jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/JFrame表面上可以关闭,/ 实际上只是被隐藏为不显示。要真正可以关闭它,必须让JFrame对象/ 调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)这样的方法来实现关闭功能。/* * 例子3.3,本例演示使用容器JFrame,设计一个基本的图形界面程序的过程和方法。请注意注释 * 所提示的一些应该注意的细节问题。 */import java.awt.FlowLayout;import java.awt.Font;import java.awt.Color;import javax.swing.JButton;import javax.swing.JFrame;public class JButtonAppJFrame jf=new JFrame(); /定义设计图形界面程序所需的容器对象JButton button1=new JButton(按钮1); /定义界面上需要的按钮button1,以下类似JButton button2=new JButton(按钮2);JButton button3=new JButton(按钮3);public JButtonApp() /一般总是用构造函数用于把普通组件添加到容器上构造出界面来!jf.setLayout(new FlowLayout();/当没有使用任何布局的时候,JFrame容器只会显示代码中最 /后使用add方法添加上去的组件。假如这条设置布局的语句被 /注释掉的话,程序运行后界面上将会只显示按钮3这一个按钮 jf.getContentPane().add(button1);/往容器上面添加按钮button1。注意如果是往AWT中的Frame /容器对象上面添加任何组件的话,都是调用该对象的add方 /法,以组件对象名作为参数添加即可。但对于Swing中的 /JFrame,必须先通过getContentPane()方法获取其内容面 /板,然后再调用add方法添加组件。jf.getContentPane().add(button2);jf.getContentPane().add(button3);jf.getContentPane().setBackground(Color.RED); /把jf的背景色设置为红色。button1.setFont(new Font(隶书,Font.PLAIN,20); /给按钮button1设置字体。jf.setVisible(true);/JFrame容器对象默认是不可见的,必须要设置为可见,界面才会出来。jf.pack(); /如果尝试不调用pack函数,默认出来的界面不会显示全部组件。pack的作用是使 /界面上的所有组件以最经济的方式全部显示出来。public static void main(String args) JButtonApp jba=new JButtonApp(); /生成对象实例,在此过程中构造函数会被调用 /运行,界面即出现/* 例子3.4,本例演示容器Applet的使用。*/import java.applet.Applet;import javax.swing.JTextField;public class JTextFieldApp extends Applet /这是一个Applet程序,Applet实际上也是一种容器!JTextField jtxtfld1,jtxtfld2; /定义两个JTextField类型的组件public void init()jtxtfld1=new JTextField(20); /生成对象实例jtxtfld2=new JTextField(20);add(jtxtfld1); /将组件添加到容器Applet上add(jtxtfld2); jtxtfld2.setEditable(false); /将其中的jtxtfld2设置为不可编辑的,即不能往里输入东西/* 例子3.5,本例演示FlowLayout布局(顺序布局)的使用。这种布局就是按照调用add方法添加组件的顺序* 从左到右、从上到下摆放组件,下面的程序中的5个按钮就是按照这样布局的。*/import java.awt.*;import java.awt.event.*;public class FlowLayoutApp extends Frame /这个例子程序不是在程序中定义Frame容器对象作为 /容器,而是继承自Frame类。这隐含着是以Frame作 /为顶层容器。public FlowLayoutApp() /构造函数super(An FlowLayout Example); /调用父类的构造函数设置顶层容器的标题setLayout(new FlowLayout();setBackground(Color.green); /以绿色作为界面的背景色setVisible(true); /容器设置为可见add(new Button(按钮1); /添加一个按钮到容器上面add(new Button(按钮2); add(new Button(按钮3); add(new Button(按钮4); add(new Button(按钮5); pack(); /使界面上的元素在程序一运行之后,就全部显示出来。public static void main(String args)FlowLayoutApp fla=new FlowLayoutApp(); /生成对象实例/* * 例子3.6,本例演示BorderLayout布局(边界布局)的使用。这种布局会把容器上的组件按照 * 东西南北中各个方位进行排列。可以通过参数具体指定某个组件在东西南北中的哪一个方向。 * 通过这种布局,可以把容器细分为几个部分,以便设置更好的界面。请注意并不是一定要东 * 西南北中五个方向都要放组件的。不足五个的组件同样可以分别被指定放在容器上东西南北 * 中的任何一个方位。自己可以尝试放置少于五个组件的情况。 */import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutAppJFrame jf;JButton eastButton;JButton southButton;JButton westButton;JButton northButton;JButton centerButton;public BorderLayoutApp()jf=new JFrame(这是一个演示BorderLayout布局的例子程序);eastButton=new JButton(东按钮);southButton=new JButton(南按钮);westButton=new JButton(西按钮);northButton=new JButton(北按钮);centerButton=new JButton(中央按钮);jf.add(eastButton,East); /注意:Frame容器的默认布局就已经是BorderLayoutjf.add(southButton,South);jf.add(westButton,West); jf.add(northButton,North);jf.add(centerButton,Center);jf.setVisible(true);jf.pack();public static void main(String args)BorderLayoutApp bla=new BorderLayoutApp();/*例子3.7,本例演示null布局(顺序布局)的使用。有时会用到null布局(即无布局管理器),程序员必须自己为容器中的组件设置大小和位置,因此其好处是可以随心所欲地设置组件的大小和位置得到自己想要的布局,但跨平台使用时,界面可能发生变化,且程序编写和调试相对比较繁琐,示例如下。*/import javax.swing.JButton;import javax.swing.JFrame;public class NullLayoutAppJFrame jfr=new JFrame(null布局的使用示例);JButton b1=new JButton(open);JButton b2=new JButton(close);JButton b3=new JButton(ok);public NullLayoutApp() /构造函数,用于生成图形程序的界面jfr.setSize(300,300); /设置容器对象jfr的宽度和高度jfr.setLayout(null); /设置为null布局。注意null四个字母全部小写!b1.setSize(80,20); /设置按钮b1的宽度和高度b1.setLocation(10,30); /设置按钮b1在界面上的左上角的位置坐标b2.setSize(90,40);b2.setLocation(40,60);b3.setSize(100,50);b3.setLocation(100,80);jfr.add(b1); /依次将每个组件添加到容器上jfr.add(b2);jfr.add(b3);jfr.setResizable(true);jfr.setVisible(true);/jfr.pack(); 注意:使用null布局之后,pack方法反而不需要使用了!public static void main(String args)NullLayoutApp nla=new NullLayoutApp(); /定义对象实例,调用构造函数生成界面Swing的一些应用示例1、 Swing和AWT的区别2、 容器类:JFrame、JApplet、JDialog、JComponent普通组件类:JButton、JTextField、JTextArea、JLabel。辅助类:Color、Font、LayoutManager。下面的例子都将基于Swing。3、 创建一个框架import javax.swing.JFrame;public class MyFramepublic static void main(String args) JFrame frame = new JFrame(我的第一个界面);frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);4、 向框架中添加组件:import javax.swing.JButton;import javax.swing.JFrame;public class MyFramepublic static void main(String args) JFrame frame = new JFrame(我的第一个界面);JButton button= new JButton(按钮);frame.add(button); /JDK5之后允许直接如此调用将组件放在内容面板中frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);5、 布局管理器,此例开始尽量将界面设计放在构造函数中,便于类被复用等。/先看一个FlowLayout的例子import ;import java.awt.FlowLayout;import ;import ;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);add(new JLabel(学号:);add(new JTextField(8);add(new JLabel(性别);add(new JTextField(2);add(new JLabel(姓名:);add(new JTextField(8);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);6、 GridLayout,写一个例子或改改上例试试看? 行数列数不能同时为0. 行列都不为0的情况下,行数是主导参数。7、 BorderLayout,写一个例子测试看看。8、 用JPanel(面板)作为子容器细化界面设计:import java.awt.*;import javax.swing.*;public class TestPanels extends JFrame public TestPanels() / Create panel p1 for the buttons and set GridLayout JPanel p1 = new JPanel(); p1.setLayout(new GridLayout(4, 3); / Add buttons to the panel for (int i = 1; i = 9; i+) p1.add(new JButton( + i); p1.add(new JButton( + 0); p1.add(new JButton(Start); p1.add(new JButton(Stop); / Create panel p2 to hold a text field and p1 JPanel p2 = new JPanel(new BorderLayout(); p2.add(new JTextField(Time to be displayed here), BorderLayout.NORTH); p2.add(p1, BorderLayout.CENTER); / add contents into the frame add(p2, BorderLayout.EAST); add(new JButton(Food to be placed here), BorderLayout.CENTER); /* Main method */ public static void main(String args) TestPanels frame = new TestPanels(); frame.setTitle(The Front View of a Microwave Oven); frame.setSize(400, 250); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 9、 Color类如 : Color color = new Color(128,100,100);import ;import java.awt.Color;import java.awt.FlowLayout;import ;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JButton button = new JButton(按钮);add(new JLabel(学号:);add(new JTextField(8);add(new JLabel(性别);add(new JTextField(2);add(new JLabel(姓名:);add(new JTextField(8);Color color = new Color(150,100,100); button.setBackground(color); /或改成RED试试?button.setForeground(Color.blue);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);10、 Font类public Font(String name, int style, int size);import ;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import ;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JButton button = new JButton(按钮);add(new JLabel(学号:);add(new JTextField(8);add(new JLabel(性别);add(new JTextField(2);add(new JLabel(姓名:);add(new JTextField(8);Color color = new Color(150,100,100); button.setBackground(color); /或改成RED试试?button.setForeground(Color.blue);Font font = new Font(黑体,Font.PLAIN,22); /字体设置button.setFont(font);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);11、看点GUI组件的一些其它普遍特性,比如给面板设置边界,给按钮设置提示(鼠标放上去会有提示):import ;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import ;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.TitledBorder;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JPanel jp = new JPanel(new FlowLayout(); /在上例基础使用面板JButton button = new JButton(按钮);jp.add(new JLabel(学号:);jp.add(new JTextField(8);jp.add(new JLabel(性别);jp.add(new JTextField(2);jp.add(new JLabel(姓名:);jp.add(new JTextField(8);add(jp);jp.setBorder(new TitledBorder(一些组件放在本JPanel中);/给面板设置边界button.setToolTipText(请点击本按钮继续); /鼠标放到按钮上会有提示Color color = new Color(150,100,100); button.setBackground(color); /或改成RED试试?button.setForeground(Color.blue);Font font = new Font(黑体,Font.PLAIN,22); /字体设置button.setFont(font);add(button);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);12、其实上面所说的颜色、边界、鼠标提示等是一般GUI组件都有的特性。比如下例在上面的例子基础上给一个添加进去的JTextField也增加了提示。import ;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import ;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.TitledBorder;public class MyFrame extends JFrameMyFrame()setLayout(new FlowLayout(FlowLayout.LEFT,10,20);JPanel jp = new JPanel(new FlowLayout(); /在上例基础使用面板JButton button = new JButton(按钮);JTextField jt = new JTextField(16); /在上例基础上增加文本框jp.add(new JLabel(学号:);jp.add(new JTextField(8);jp.add(new JLabel(性别);jp.add(new JTextField(2);jp.add(new JLabel(姓名:);jp.add(new JTextField(8);add(jp);jp.setBorder(new TitledBorder(一些组件放在本JPanel中);/给面板设置边界button.setToolTipText(请点击本按钮继续); /鼠标放到按钮上会有提示Color color = new Color(150,100,100); button.setBackground(color); /或改成RED试试?button.setForeground(Color.blue);Font font = new Font(黑体,Font.PLAIN,22); /字体设置button.setFont(font);add(button);jt.setToolTipText(请在此输入内容); /给文本框设置提示内容add(jt);public static void main(String args) MyFrame frame = new MyFrame();frame.setSize(400, 300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);13、图像图标(先得准备一点测试用的图片)ImageIcon icon = new ImageIcon(“image/pic.gif”);import javax.swing.*;import java.awt.*;public class TestImageIcon extends JFrame private ImageIcon usIcon = new ImageIcon(image/us.gif); private ImageIcon myIcon = new ImageIcon(image/my.jpg); private ImageIcon frIcon = new ImageIcon(image/fr.gif); private ImageIcon ukIcon = new ImageIcon(image/uk.gif); public TestImageIcon() setLayout(new GridLayout(1, 4, 5, 5); add(new JLabel(usIcon); add(new JLabel(myIcon); add(new JButton(frIcon); add(new JButton(ukIcon); /* Main method */ public static void main(String args) TestImageIcon frame = new TestImageIcon(); frame.setTitle(TestImageIcon); frame.setSize(500, 125); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 14、更多其它组件应用和测试:JList、JComboBox、JCheckBox、JRadioButton、JScrollBar等图形界面程序设计Part II:事件处理15、事件 和 事件源事件:点击按钮、键盘输入、鼠标移动。事件源:如按钮等。图形界面程序是事件驱动的,当用户与程序之间交互时产生事件,触发程序中的事件处理代码。事件一般分为用户事件和系统事件。通常关注比较多的是用户事件。典型的交互和要处理的用户事件包括用户移动鼠标、单击鼠标,点击按钮、点击下拉列表框或选项卡、在文本框中输入内容后回车、点击菜单项或关闭图形窗口等。事件处理,处理的是谁的事件?实际上处理的就是界面上的组件的事件。比如被点击的按钮,被输入内容后按下了回车键的单行文本框等等。事件的处理并非自动完成。事件发生后,应该产生什么结果,其实完全是由程序设计者所设计的代码来决定由每一行具体的程序代码来指定在事件发生后,界面上的各个组件产生什么显示结果,或者产生什么改变。Java事件处理的机制是产生一个事件的对象必须设定其事件处理的监听者对象(Listener)。当事件发生时,监听者便会依据事件的类型来执行相应的程序。要处理一个对象所产生的事件,首先必须注册该对象的监听者。Java.awt.event包中按照不同的事件类型定义了11个监听器接口,每类事件都有对应的事件监听器,监听器实际上就是接口,接口中定义了事件发生时可调用的、必须要实现的方法,一个类可实现监听器的一个或多个接口。与AWT事件有关的所有事件都是由java.awt.AWTEvent类派生而来的。系统对事件进行了分类。每一种事件用一种系统定义好的系统类来表示。不同的组件会对应产生不同的事件,也就对应到不同的事件类。而每一种事件类,又对应要实现(implements)不同的接口。而每一个接口中,又有一个或者多个方法必须要被实现(这也是接口被implements时的语法要求),这些方法中的代码,就是对应的事件的具体的处理代码。常见的AWT事件以及与其关联的组件如下表所示,Swing也是类似的。另外,由于监听器实际上就是实现了相应接口的类,而接口一般要求实现许多方法,如接口WindowListener中有7个方法,并不是所有方法都是需要的,但接口却要求实现其所有的方法。为了简化,java语言为一些接口统一提供了事件适配器(Adapter)。事件适配器是抽象类。通过继承事件适配器,重写需要的方法,不要的方法可以不写。例如Java.awt.event包中提供了以下几个事件适配器:ComponentAdapter组件适配器,ContainerAdapter容器适配器,FocusAdapter焦点适配器,KeyAdapter键盘适配器,MouseAdapter鼠标适配器,MouseMotionAdapter鼠标移动适配器,WindowAdapter窗口适配器。表4-1 常见的AWT事件及其关联组件、接口、方法事件类可关联的组件要实现的接口接口中必须实现的方法ActionEventButton,List,MenuItem,TextFieldActionListenerActionPerformed(Actionevent e)ItemEventCheckbox,Choice,List,MenuItemItemListenerItemStateChanged(ItemEvent eContainerEventContainer,Dialog,Frame,Panel,ScrollPane,WindowContainerListenercomponentAdded(ContainerEvent e)componentRemoved()MouseMotionEventButton,Canvas,Checkbox,choice,Component,Container,Dialog,Frame,Label,List,Panel,Scrollbar,ScrollPane,TextArea,TextField,WindowMouseMotionListenermouseGragged(MouseEvent e)mouseMoved(MouseEvent e)MouseEvent同MouseMontionEventMouseListenermousePressed(MouseEvent e)mouseReleased()mouseEntered()mouseExited()mouseClicked()KeyEvent同MouseMontionEventKeyEventkeyPressed(KeyEvent e)keyReleased()keyTyped()FocusEvent同MouseMontionEventFocusListenerfocusGained(FocusEvent e)focusLost(FocusEvent e)AdjustmentEventScrollbarAdjustmentListeneradjustmentValueChanged(AdjustmentEvent e)ComponentEvent同MouseMontionEventComponentListenerComponentMoved(ComponentEvent e)ComponentHidden()ComponentResized()ComponentShown()TextEventTextField,TextAreaTextListenertextValueChanged(TextEvent e)WindowEventDialog,Frame,WindowWindowListenerWindowClosing(WindowEvent e)WindowOpened()WindowIconified()WindowClosed()WindowDeiconfied()WindowActivated()WindowDeactivated()总结一下,图形界面程序设计中的事件处理的步骤是:首先要让可能产生事件的组件对事件进行监听,那么就要实现监听器接口,实现(implements)了接口的话,就必须要实现接口中所有的方法(这些方法就是具体进行事件处理的代码)。每个组件的事件处理,在程序代码设计上都是要处理这三点。下面我们以例子程序来进行演示和体会。import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;/解决实验题目中,判断字符串为空的几种方法public class EmptyTest implements ActionListenerJFrame jFrame=new JFrame(JFrame);JTextField jt=new JTextField(22);JButton jb = new JButton(Press me);EmptyTest()jFrame.setLayout(new FlowLayout();jFrame.add(jt);jFrame.add(jb);jb.addActionListener(this);jFrame.setLocation(100
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿件


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!