组件及事件处理

合集下载

AndroidUI基本控件与事件处理

AndroidUI基本控件与事件处理

《Android基础应用》AndroidUI基本控件与事件处理⏹本章任务⏹使用Android开发本息计算器程序⏹使用Android开发华氏-摄氏温度转换器⏹本章目标⏹熟悉掌握本章基本控件的使用⏹熟练掌握Android常用事件1.Android基本控件Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。

如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离1.1TextView和EditTextTextView是一种用于显示字符串的控件EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextViewTextView和EditText基本属性●android:id设置ID,通过编码可以找到这个组件●android:layout_width设置在屏幕上的宽度●android:layout_height设置在屏幕上的高度fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间wrap_content强制性地使视图扩展以显示全部内容●android:text设置显示的文本信息●android:textColor设置文本颜色●android:textSize设置文本尺寸示例的现实结果1.2Button和ImageButtonButton是一种按钮控件,用户能够在该控件上点击,并后引发相应的事件处理函数ImageButton用以实现能够显示图像功能的控件按钮示例示例的现实结果1.3CheckBox和RadioButtonCheckBox是一个同时可以选择多个选项的控件RadioButton则是仅可以选择一个选项的控件示例1.4 开发本息计算器界面需求说明银行提供整存整取定期储蓄业务,年利率为(一年 2.25%,两年 2.7%,三年3.24%,五年3.6%),要求输入本金数目和存款年限,计算到期取款时银行应支付本息开发思路开发页面main.xml按效果图进行布局示例练习——开发本息计算器界面2.Android事件处理事件处理的概念任何应用最终都是要面对用户的,经常处理的是用户的动作,也就是说要为用户的动作提供响应,这种为为用户动作提供响应的机制就是事件处理Android提供了强大的事件处理机制基于监听的事件处理●主要就是为Android界面组件绑定特定的事件监听器基于回调的时间处理●主要做法是重写Android组件特定的回调函数,Android大部分界面组件都提供了事件响应的回调函数,我们只要重写它们就行2.1基于监听的事件处理这是更具“面向对象”性质的事件处理方式,与java中的AWT,Swing开发中的处理相同在监听器模型中,主要涉及三类对象事件源Event Source:产生事件的来源,通常是各种组件,如按钮,窗口等事件Event:事件封装了界面组件上发生的特定事件的具体信息,如果监听器需要获取界面组件上所发生事件的相关信息,一般通过事件Event对象来传递 事件监听器Event Listener:负责监听事件源发生的事件,并对不同的事件做相应的处理基于监听器的事件处理机制是一种委派式Delegation的事件处理方式,事件源将整个事件委托给事件监听器,由监听器对事件进行响应处理。

事件处理业务的简易组件编排框架

事件处理业务的简易组件编排框架

事件处理业务的简易组件编排框架背景很多⼊侵事件类型的处理流程⾮常相似,只有少部分的差异。

按⽬前的⽅式,每种⼊侵事件类型都要开发⼀遍,很多相似的模板代码,可复⽤性和可维护性都⼀般。

这种情况下,可以采⽤业务编排的⽅式,来提升事件处理的可复⽤性和可维护性。

业务的组件编排,意味着需要将业务逻辑抽象成组件,然后将组件编排成业务流程。

基于组件编程思想。

业务的组件编排和⼯作流引擎有点类似。

但我们的⽬标不是实现类似审批、采购这样的流程,⽽是为了让业务逻辑能够更加可复⽤和可扩展,提升研发效率。

因此,最终⽬标不是实现⼀个⼯作流引擎,⽽是实现⼀个相对灵活的业务组件编排和执⾏框架。

⽬标将通⽤和差异分离,最⼤程度复⽤已有逻辑,降低新⼊侵事件处理的开发量,提升其研发效率;业务逻辑组件化,改动只局限在新增的组件,遵循开闭原则,提升软件可维护性。

适⽤场景具有相似性的模板流程的事件处理。

设计思路要设计和实现⼀个事件处理的业务组件编排,需要解决如下问题:定义⼀个事件处理流程的基本概念集:事件数据(EventData)、基于事件数据的事件处理上下⽂语境( FlowContext) 及构建者(FlowContextBuilder)、事件处理流程定义(EventFlow)、事件处理组件声明和定义( ComponentProperties 和 FlowComponent);定义事件处理流程的基本模板(或者可以⾃定义);定义具体的业务事件处理的流程所需要的组件,并能根据指定业务类型来选择合适的流程;定义具体的业务组件,并能根据组件的功能和类型来选择合适的组件来执⾏。

整体框图如下:本⽂源代码在下的 cc.lovesq.flows 包下。

基本概念事件数据 IEventData表⽰任何事件数据;不同的事件处理可以定义不同的具体类 EventData。

public interface EventData {/*** 获取事件数据*/String getData();/*** 获取事件类型*/String getType();}事件处理语境 FlowContext 和 FlowContextBuilder基于 EventData 构建,⽤于处理事件过程中的上下⽂语境。

JavaSwing中处理各组件事件的一般步骤完整版

JavaSwing中处理各组件事件的一般步骤完整版

J a v a S w i n g中处理各组件事件的一般步骤集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。

2.将该组件添加到相应的面板(如JPanel)。

3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。

4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。

以上步骤我们可以用多种方法实现。

但人们通常用二种方法。

第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。

为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。

该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。

通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。

首先,我们利用单个监听器来实现该程序。

我们定义一个名为Simple1的类来包括所有代码。

所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。

以下是代码:import .*;import .*;public class Simple1{private static JFrame frame;dd(myPanel);();(true);}}让我们来看看以上代码是如何工作的。

在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。

相应的变量Frame,button1,button2定义在程序的开头部分。

在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。

第十一章 组件及事件处理

第十一章 组件及事件处理

CCUTSOFT
JAVA程序设计
6、JCheckbox javax.swing 包中的JCheckbox类用来建立复 选框。复选框提供两种状态,一种是选中,另一 种是未选中。 复选框通常是一个矩形框,当选择某个选择 框后,里面就有了个对号。JCheckBox类有下列 常用方法: public JCheckBox ( ) public void setText(String s) public boolean isSelected( ) public void setSelected(boolean f) public String getText( )
CCUTSOFT
JAVA程序设计
4、JButton javax.swing 包中的JButton类是专门用来建 立按钮的,即JButton 类创建的一个对象就是一 个按钮。JButton类有下列常用的方法: JButton( ) public void setText(String s) public String getText( )
CCUTSOFT
JAVA程序设计
setDefaultCloseOperation(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 JCheckBox("喜欢篮球"); add(checkBox1); add(checkBox2); add(checkBox3);

8第八章常用组件及事件处理

8第八章常用组件及事件处理

public void setExtendedState(int state) 设置窗口的扩展状态 public void setDefaultCloseOperation(int 该方法用来设置单击窗体右上角的“关闭”图 operation) 标后,程序会做出怎样的处理
8.1.2 菜单条、菜单、菜单项
JMenuItem:菜单项
JMenuItem(String s);传名称的构造方法 JMenuItem(String s,Icon icon);传名称和图标的构造方法 Public void setEnabled(boolean b);当前菜单项是否能选 Public setText(String s );设置菜单项名称 Public String getText();获取菜单项的名称
JFrame JRoot Pane
JDialog JRoot Pane
Jwindow JRoot Pane
JApplet JRoot Pane
Swing javax.swing.*;
JButton
JTable
JLabel
JCanvas
JList
JTextField
JTextAre
JToggleButto
图形用户界面设计
两个概念必须掌握: 容器类(Container) 组件类(Component) 容器和组件的作用如下: Java把Component类的子类或间接子类创建的对象称 为一个组件。 Java把Container的子类或间接子类创建的对象称为一 个容器。 可以向容器中添加组件。Container类提供了add方法 添加其他组件,removeAll()方法删除容器全部组件, remove(Component c)删除参数C指定的组件 容器本身也是一个组件,因此可以把一个容器添加到 另一个容器中,实现容器的嵌套。

11.2事件与常用组件介绍

11.2事件与常用组件介绍

事件驱动程序设计图形用户界面是静态的,它应该能够响应用户的操作。

比如,当用户在GUI上输入一个字符或点击鼠标,都会发生事件,程序根据事件类型作出反应就是事件处理。

1.1 事件处理模型与事件类在Java 1.1版之前事件处理采用事件传递模型,这种方法有一定的缺点,因此从Java 1.1版开始,Java的事件处理采用了新的事件处理模型,我们称为事件代理模型(event delegation model)。

尽管在Java 2中仍然支持两种模型,但推荐使用新的事件模型。

所谓事件代理模型就是将事件的处理从事件源对象代理给一个或多个称为事件监听器(listener)的对象,事件由事件监听器处理。

事件代理模型把事件的处理委托给外部实体进行处理,实现了事件源和监听器分离的机制。

事件代理模型涉及到三种对象:事件源、事件和事件监听器。

①事件源(event source):产生事件的对象,一般来说可以是组件,如按钮、对话框等。

当这些对象的状态改变时,就会产生事件。

事件源可以是可视化组件,也可以是计时器等不可视的对象。

②事件(event):描述事件源状态改变的对象。

如按钮被点击,就会产生ActionEvent 动作事件。

③事件监听器(listener):接收事件并对其进行处理的对象。

事件监听器对象必须是实现了相应接口的类的对象。

Java的事件处理模型如图1所示。

首先在事件源上注册事件监听器,当用户行为触发一个事件时,运行时系统寻找事件监听器对象来处理事件。

图 1 Swing事件处理模型为了实现事件处理,Java定义了大量的事件类,这些类封装了事件对象。

Swing组件可产生多种事件,如点击按钮、选择菜单项会产生动作事件(ActionEvent),关闭窗口会产生窗口事件(WindowEvent)等。

所有事件类的根类是java.util.EventObject类,该类的定义为:package java.util;public class EventObject implements java.io.Serializable {protected transient Object source;public EventObject(Object source) {if (source == null)throw new IllegalArgumentException("null source");this.source = source;}public Object getSource() {return source;}294public String toString() {return getClass().getName() + "[source=" + source + "]";}}其中,getSource()方法是最重要的方法,它返回触发事件的事件源对象,注意它的返回类型是Object。

AWT组件及事件处理(三)

AWT组件及事件处理(三)

public void actionPerformed(ActionEvent e) { if(e.getSource()==button1) { setBackground(Color.cyan); } else if(e.getSource()==button2) { setBackground(backColor); } } }
public void actionPerformed(ActionEvent e) {if(e.getSource() == tf) ta2.setText(tf.getText()); } public void textValueChanged(TextEvent e) {if(e.getSource() == ta1) ta2.setText(ta1.getText()); } }
CardLayout(卡片式布局)将每个组件看作一张 卡片,一个容器中可以加入多张卡片,但每次只 有一个可见。也称“多层页面设置”,它把每一 个组件都视为容器中的一层,每一个组件都会布 满整个容器。这些组件都会赋予一个名称,然后 再依这个名称来控制组件是否显示。 假设有一个容器con,使用CardLayout的一般步骤: 1、创建CardLayout布局对象 如:CardLayout card=new CardLayout(); 2、使用setLayout( )为容器设置布局 如:con.setLayout(card);
ScrollPane():创建滚动面板,滚动条初始不可见。
ScrollPane(int a) : 用指定的参数创建一个滚动 面板。a的取值为:
Scrollpane.SCROLLBARS-ALWAYS Scrollpane.SCROLLBARS-AS-NEEDED Scrollpane.SCROLLBARS-NEVER

qtvtkwidget组件事件函数 -回复

qtvtkwidget组件事件函数 -回复

qtvtkwidget组件事件函数-回复QtVTKWidget是一个在Qt中使用VTK(Visualization Toolkit)库的QWidget子类组件。

它提供了一个简单易用的接口,使开发人员可以在Qt应用程序中集成和显示VTK渲染窗口。

在本文中,我们将探讨QtVTKWidget组件的事件函数,包括其定义和使用以及如何处理各种事件。

第一步:了解QtVTKWidget组件在开始讨论事件函数之前,我们需要了解QtVTKWidget组件的基本概念和功能。

QtVTKWidget继承自QWidget类,它是Qt应用程序的基本用户界面构件。

它提供了一个用于显示VTK 3D场景的窗口,其中可以进行交互和渲染。

QtVTKWidget组件可以在Qt Designer中可视化布局,还可以在代码中动态创建和设置属性。

通过QtVTKWidget,我们可以方便地将VTK渲染窗口集成到Qt应用程序的用户界面中。

第二步:理解事件函数在Qt中,事件函数是用于处理用户输入和应用程序响应的函数。

每个QtVTKWidget对象都可以接收和处理各种事件。

事件可以是键盘事件、鼠标事件、滚动事件、焦点事件等等。

每个事件都有一个对应的事件函数,用于处理特定类型的事件。

事件函数具有特定的签名,它们接收一个QEvent对象作为参数,并返回一个布尔值,表示该事件是否已经被处理。

第三步:事件函数示例现在让我们看一下如何定义和使用QtVTKWidget的事件函数。

以下是一个示例:cppclass CustomVTKWidget : public QtVTKWidget{public:CustomVTKWidget(QWidget *parent = nullptr);protected:void keyPressEvent(QKeyEvent *event);void mousePressEvent(QMouseEvent *event);};CustomVTKWidget::CustomVTKWidget(QWidget *parent) : QtVTKWidget(parent){构造函数中的初始化代码}void CustomVTKWidget::keyPressEvent(QKeyEvent *event){处理键盘按下事件if (event->key() == Qt::Key_Escape){如果按下了Esc键,执行特定操作close(); 关闭窗口}}void CustomVTKWidget::mousePressEvent(QMouseEvent *event) {处理鼠标按下事件if (event->button() == Qt::LeftButton){如果按下了鼠标左键,执行特定操作qDebug() << "左键按下";}}在这个示例中,我们定义了一个名为CustomVTKWidget的自定义QtVTKWidget子类。

组件及事件处理

组件及事件处理

组件及事件处理Java SwingJava Swing是Java的⼀个强⼤分⽀,为桌⾯程序设计提供了⾮常强⼤的⽀持。

通过⽤户图形界⾯GUI,⽤户和图形之间可以⽅便地进⾏交互。

java.awt包,提供了许多⽤来设计GUI的组件类。

早期主要使⽤java.awt类,javax.swing诞⽣后,该包提供了功能更为强⼤的类⽤于GUI设计。

javax. swing包中JComponent类是java. awt包中Container类的⼀个直接⼦类、是Component类的⼀⼀个间接⼦类。

窗JFrame⼀个基于GUI的应⽤程序应当提供⼀个能和操作系统直接交互的容器,该容器可以被直接显⽰、绘制在操作系统控制的平台上,例如显⽰器上,这样的容器被称作GUI设计中的底层容器。

Java提供的JFrame类的实例就是⼀个底层容器。

其他组件必须被添加到底层容器中,以便借助这个底层容器和操作系统进⾏信息交互。

JFrame是container类的间接⼦类。

⽅法作⽤setVisible(布尔值)设置窗⼝否可见(默认不可见)dispose()撤销当前窗⼝,并释放资源setDefaultCloseOperation(int operation)设置点击关闭图标后的处理⽅式operation取值取值含义DO_ NOTHING ON_ CLOSE什么也不做HIDE_ ON_ CLOSE隐藏当前窗⼝DISPOSE_ ON_ CLOSE隐藏当前窗⼝,并释放窗体占有的其他资源EXIT_ ON_ CLOSE结束窗⼝所在的应⽤程序JFrame windows = new JFrame("⼀个窗⼝"); //创建⼀个窗⼝,标题为“⼀个窗⼝”windows.setBounds(x,y,width,height); //指定组件位置及⼤⼩windows.setVisible(true); //使窗⼝可见windows.setDefaultCloseOperation(JFrame.EXIT_ ON_ CLOSE);//设置点击关闭图标后的处理⽅式处理事件1.事件源能够产⽣事件的对象都可以成为事件源,事件源必须是⼀个对象,⽽且这个对象必须是Java认为能够发⽣事件的对象。

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理

《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。

第六章 组件和事件的处理机制

第六章 组件和事件的处理机制
第六章 组件和事件的
处理机制
本章要点
技能目标
» 能运用布局管理器及各种可视组件设计应用程序图形界面。
知识目标
» 掌握常用可视组件的用法 » 掌握容器组件的布局样式 » 掌握事件驱动机制
项目任务
» 本项目完成输入学生的姓名、性别、个人爱好与籍贯信息并 输出。学生的信息输入形式是借助于图形化的用户界面实现 的。为方便用户的输入,在图形化界面中使用了很多的可视 组件。
(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。
(3)特殊容器:在GUI上起特殊作用的中间层,如 JInternalJFrame,JLayeredPane,JRootPane等。
(4)基本控件:实现人机交互的组件,如Jbutton, JComboBox, JList,
框架的构造方法如下:
①public JFrame():声明并创建一个没有标题的JFrame对象。 ②public JFrame(String title):声明并创建一个指定标题为title的 JFrame对象。 框架的实例方法如下: ①public void add(Component comp):在框架中添加组件comp。 ②public void setLayout(LayoutManager mgr):设置布局方式。 ③public void setTitle(String title):设置框架的标题。 ④public String getTitle(String title):获取框架的标题。
Java把由Container的子类或间接子类创建的对象称为一个容器。 容器类的常用方法:
①public void add( ):一个容器调用这个方法将组件添加到该容器中。

常用组件及事件处理

常用组件及事件处理
5
三、组件的大小与位置
public void setSize(int width,int height) //设置组件的大小,高度为height,宽度为width
public void setLocation(int x,int y) //设置组件在容器中的位置,x为组件距容器左边界的像素值,y
为组件距容器上边界的像素值。 public Dimension getSize()
// 设置组件在容器中的可见性,当参数b取true时,组件在容 器中可见;当参数b取false时,组件在容器中不可见。除了Window 型组件外,其他类型的组件默认是可见的。
8
import java.awt.*;
import java.awt.event.*;
class ComponentDemo extends Frame
通过图形用户界面(GUI),用户和程序之间可以方便的进行交互。 Java的抽象窗口工具包(AWT)中包含了许多类支持GUI设计。如:按 钮、菜单、列表、文本框、窗口、面板等。
GUI界面中有两个概念,一个是组件,另一个是容器,容器是来用 存放组件的对象。下图是java.awt包中一部分类的层次关系。
1
//返回一个Dimension对象的引用,该对象实体中含有名字是 width和height的成员变量,方法返回的Dimension对象的width的值 就是组件的宽度,height的值就是组件的高度。
6
ห้องสมุดไป่ตู้
public Point getLocation(int x,int y)
//返回一个Point对象的引用,该对象实体中含有名字是x和y的成 员变量,方法返回的Point对象的x,y值是组件左上角在容器坐标系中 的x坐标和y坐标。

组件与事件处理

组件与事件处理

(3)JMenuItem菜单项 JMenuItem是JMenu的父类,该类是负责创建菜单项的, 即JMenuItem的一个实例就是一个菜单项。菜单项将被放 在菜单里。JMenuItem类的主要方法有以下几种: • JMenuItem(String s) 构造有标题的菜单 • JMenuItem(String text, Icon icon) 构造有标题和图标 的菜单项 • public void setEnabled(boolean b):设置当前菜单项 是否可被选择。
• public String getLabel() 得到菜单选项的名字。 • public void setAccelerator(KeyStroke keyStroke)
为菜单项设置快捷键。为了向该方法的参数传递一个 KeyStroke对象,可以使用KeyStroke类的类方法:public static KeyStroke getKeyStroke(char keyChar)返回一 个KeyStroke对象。 也可以使用KeyStroke类的类方法: public static KeyStroke getKeyStroke(int keyCode, int modifiers) 返回一个KeyStroke对象,其中参数keyCode取值范围:
KeyEvent.VK_A~ KeyEvent.VK_Z 。modifiers 取值: InputEvent.ALT_MASK、InputEvent .CTRL_MASK和 InputEvent .SHIFT_MASK。 (4)嵌入子菜单JMenu是JMenuItem的子类,因此菜单项本 身还可以是一个菜单,称这样的菜单项为子菜单。为了使 得菜单项有一个图标,可以用图标类Icon声明一个图标, 然后使用其子类ImageIcon类创建一个图标,如: Icon icon=new ImageIcon(“dog.gif”);

第七章 界面与事件处理

第七章 界面与事件处理

Parent:父窗体
[, [, [, [, [, /ALIGN_*** |]:组件在父窗体中排列位置 BITMAP=value]:图标 /MENU]:按钮是一个下拉菜单 XSIZE=value]:宽度 YSIZE=value]:高度
Widget_button示例

tlb = WIDGET_BASE(xsize=400,ysize=400,/column,mb ar =mbar,title ='test_button') menu = WIDGET_BUTTON(mbar, value ='file(&F)') fmenu = WIDGET_BUTTON(menu, value ='open') sMenu = WIDGET_BUTTON(menu, value ='save',/menu) eMenu = WIDGET_BUTTON(menu, value ='exit',/SEPARATOR)
Result:返回值为文件名(含目录)
7.1.2 对话框界面组件-dialog_message

Result = DIALOG_MESSAGE( Message_Text [,
/CANCEL] [, /ERROR | , /INFORMATION | , /QUESTION] [, TITLE=string] )
7.1.2 对话框界面组件



对话框方式进行信息处理 Dialog_pickfile Dialog_message Dialog_read_image Dialog_write_image
7.1.2 对话框界面组件-dialog_pickfile

Java实验五

Java实验五

Java实验五组件与事件处理【目的】①学习处理ActionEvent事件;②学习处理ItemEvent事件和paint方法;③学习使用布局类。

【内容】1.算术测试。

✧实验要求:编写一个算书测试小软件,用来训练小学生的算术能力。

程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。

✧程序:Teacher.javapublic class Teacher{int numberOne, numberTwo;String operator = "";boolean right;public int giveNumberOne(int n){numberOne = (int)(Math.random() * n) + 1;return numberOne;}public int giveNumberTwo(int n){numberTwo = (int)(Math.random() * n) + 1;return numberTwo;}public String giveOperator(){double d = Math.random();if (d >= 0.5)operator = "+";elseoperator = "-";return operator;}public boolean getRight(int answer){if (operator.equals("+")){if (answer == numberOne + numberTwo)right = true;elseright = false;}else if (operator.equals("-")){if (answer == numberOne - numberTwo)right = true;elseright = false;}return right;}}ComputerFrame.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extends Frame implements ActionListener {TextField textOne, textTwo, textResult;Button getProblem, giveAnwser;Label operatorLabel, message;Teacher teacher;ComputerFrame(String s){super(s);teacher = new Teacher();setLayout(new FlowLayout());textOne = new TextField(10); //创建textOne,其可见字符长是textTwo = new TextField(10); //创建textTwo,其可见字符长是textResult = new TextField(10); //创建textResult,其可见字符长是operatorLabel = new Label("+");message = new Label("你还没有回答呢");getProblem = new Button("获取题目");giveAnwser = new Button("确认答案");add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new Label("="));add(textResult);add(giveAnwser);add(message);textResult.requestFocus();textOne.setEditable(false);textTwo.setEditable(false);getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器setBounds(100, 100, 450, 100);setVisible(true);validate();addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){if (e.getSource() == getProblem) //判断事件源是否是getProblem{int number1 = teacher.giveNumberOne(100);int number2 = teacher.giveNumberTwo(100);String operator = teacher.giveOperator();textOne.setText("" + number1);textTwo.setText("" + number2);operatorLabel.setText(operator);message.setText("请回答");textResult.setText(null);}if (e.getSource() == giveAnwser) //判断事件源是否是giveAnwser{String answer = textResult.getText();try{int result = Integer.parseInt(answer);if (teacher.getRight(result) == true){message.setText("你回答正确");}else{message.setText("你回答错误");}}catch (NumberFormatException ex){message.setText("请输入数字字符");}}textResult.requestFocus();validate();}}MainClass.javapublic class MainClass{public static void main(String args[]){ComputerFrame frame;frame = new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试}}✧实验后的练习:1. 给上述程序增加测试乘、除的功能。

java-组件及事件处理

java-组件及事件处理

java-组件及事件处理1.Java String概述 通过图形⽤户界⾯(GUI),⽤户和程序之间可以⽅便的进⾏交互。

Java的java.awt包,即java抽象窗⼝⼯具包(AWT)提供了许多⽤来设计GUI的组件类。

java早期进⾏⽤户界⾯设计时,主要使⽤java.awt包提供的类,⽐如button(按钮)、textfield(⽂本框)、list(列表)等。

2.AWT介绍 所有的可以显⽰出来的图形元素都称为Component,Component代表了所有的可见的图形元素,Component⾥⾯有⼀种⽐较特殊的图形元素叫Container,Container(容器)在图形界⾯⾥⾯是⼀种可以容纳其它Component元素的⼀种容器,Container本⾝也是⼀种Component的,Container⾥⾯也可以容纳别的Container。

Container⾥⾯⼜分为Window和Pannel,Window是可以独⽴显⽰出来的,平时我们看到的各种各样的应⽤程序的窗⼝都可以称为Window,Window 作为⼀个应⽤程序窗⼝独⽴显⽰出来,Pannel也可以容纳其它的图形元素,但⼀般看不见Pannel,Pannel不能作为应⽤程序的独⽴窗⼝显⽰出来,Pannel要想显⽰出来就必须得把⾃⼰装⼊到Window⾥⾯才能显⽰出来。

Pannel应⽤⽐较典型的就是Applet(JAVA的页⾯⼩应⽤程序),现在基本上已经不⽤了,AJAX和JAVASCRIPT完全取代了它的应⽤。

Window本⾝⼜可以分为Frame和Dialog,Frame就是我们平时看到的⼀般的窗⼝,⽽Dialog则是那些需要⽤户进⾏了某些操作(如点击某个下拉菜单的项)才出现的对话框,这种对话框就是Dialog。

3.组件和容器(Component和Container)frame:1 package cn.javastudy.summary;23/**学习JAVA的GUI编程编写的第⼀个图形界⾯窗⼝*/4 import java.awt.*;56public class TestFrame {7public static void main(String args[]) {8 Frame f = new Frame("我的第⼀个JAVA图形界⾯窗⼝");9/*10 * 这⾥只是在内存⾥⾯创建了⼀个窗⼝对象还不能真正显⽰出来然我们看到11*/12 f.setBackground(Color.blue);// 设置窗体的背景颜⾊13// blue是Color类⾥⾯的⼀个静态常量,可以使⽤“类名.静态常量名”来访问14 f.setVisible(true);// 设置窗体是否可见15/*16 * 要想看到在内存⾥⾯创建出来的窗⼝对象,必须调⽤setVisble()⽅法,并且把参数true传⼊才能看得见窗体如果传⼊的参数是false,那么窗体也是看不见的17*/18 f.setSize(400, 400);// 设置窗体的初始⼤⼩19 f.setLocation(200, 200);// 设置窗体出现时的位置,如果不设置则默认在左上⾓(0,0)位置显⽰20 f.setResizable(false);21/*22 * 设置窗体能否被改变⼤⼩,设置为false后表⽰不能改变窗体的显⽰⼤⼩这⾥将窗体显⽰的⼤⼩设置为200X200,那么窗体的显⽰只能是这个⼤⼩了,不能再使⽤⿏标拖⼤或者缩⼩23*/24 }25 }运⾏结果如下:1package cn.javastudy.summary;23import java.awt.*;4public class TestMultiFrame{5public static void main(String args[]){6 MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);7 MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);8 MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);9 MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);10 }11 }12/*⾃定义⼀个类MyFrame,并且从Frame类继承13这样MyFrame类就拥有了Frame类的⼀切属性和⽅法14并且MyFrame类还可以⾃定义属性和⽅法15因此使⽤从Frame类继承⽽来的⾃定义类来创建图形窗⼝⽐直接使⽤Frame类来创建图形窗⼝要灵活16所以⼀般使⽤从Frame类继承⽽来的⾃定义类创建图形窗⼝界⾯⽐较好,17不推荐直接使⽤Frame类来创建图形窗⼝界⾯18*/19class MyFrame extends Frame{20static int id = 0;21//定义⼀个静态成员变量id,⽤来记录创建出来的窗⼝的数⽬22 MyFrame(int x,int y,int w,int h,Color color){23//⾃定义构成⽅法,在构造⽅法体内使⽤super调⽤⽗类Frame的构造⽅法24super("MyFrame"+(++id));25 setBackground(color);26/*使⽤从⽗类Frame继承⽽来的⽅法设置窗体的相关属性*/27 setLayout(null);28 setBounds(x,y,w,h);29 setVisible(true);30 }31 }运⾏结果:PanelPanel范例:1package cn.javastudy.summary;23import java.awt.*;4public class TestPanel{5public static void main(String args[]){6 Frame f = new Frame("JAVA Fram With Panel");7 Panel p = new Panel(null);8 f.setLayout(null);9 f.setBounds(300,300,500,500);//这⾥设置的坐标(300,300)是相对于整个屏幕的10 f.setBackground(new Color(0,0,102));//设置背景颜⾊时使⽤三基⾊(红,绿,蓝)的⽐例来调配背景⾊11 p.setBounds(50,50,400,400);//这⾥设置的坐标(50,50)是相对于Frame窗体的12 p.setBackground(new Color(204,204,255));13 f.add(p);//把Panel容器装⼊到Frame容器中,使其能在Frame窗⼝中显⽰出来14 f.setVisible(true);15 }16 }运⾏结果如下:4.布局管理器第⼀种布局管理器——FlowLayout测试代码:1package cn.javastudy.summary;23import java.awt.*;45public class TestFlowLayout {6public static void main(String args[]) {7 Frame f = new Frame("FlowLayout");8/*9 * 使⽤Button类创建按钮按钮类的其中⼀个构造⽅法:Button(String label) label为按钮显⽰的⽂本10*/11 Button btn1 = new Button("button1");12 Button btn2 = new Button("button2");13 Button btn3 = new Button("button3");14/* setLayout⽅法的定义:public void setLayout(LayoutManager mgr) */15 f.setLayout(new FlowLayout());// 使⽤流⽔(Flow)线般的布局16/* 使⽤了布局管理器FlowLayout,这⾥的布局采⽤默认的⽔平居中模式 */17// f.setLayout(new FlowLayout(FlowLayout.LEFT));18/* 这⾥在布局的时候使⽤了FlowLayout.LEFT常量,这样就将按钮设置为左对齐 */19// f.setLayout(new FlowLayout(FlowLayout.RIGHT));20/* 这⾥在布局的时候使⽤了FlowLayout.RIGHT常量,这样就将按钮设置为右对齐 */21 f.add(btn1);// 把创建出来的按钮放置到Frame窗体中22 f.add(btn2); // 这⾥并没有设置按钮的⼤⼩与位置23 f.add(btn3); // 设置按钮的⼤⼩与位置都是由布局管理器来做的24 f.setVisible(true);25 f.setSize(200, 200);26 }27 }运⾏结果如下:第⼆种布局管理器——BorderLayout测试代码:1package cn.javastudy.summary;23import java.awt.*;45public class TestBorderLayout {6public static void main(String args[]) {7 Frame f = new Frame("BorderLayout");8 Button btnEast = new Button("East");9 Button btnWest = new Button("West");10 Button btnSouth = new Button("South");11 Button btnNorth = new Button("North");12 Button btnCenter = new Button("Center");13/*14 * 把按钮放置到Frame窗体时按照东西南北中五个⽅向排列好推荐使⽤这种⽅式去排列窗体元素,15 * 这样容易检查出错误因为这样写如果写错了编译器会提⽰出错16*/17 f.add(btnEast, BorderLayout.EAST);18 f.add(btnWest, BorderLayout.WEST);19 f.add(btnSouth, BorderLayout.SOUTH);20 f.add(btnNorth, BorderLayout.NORTH);21 f.add(btnCenter, BorderLayout.CENTER);22/*23 * 也可以使⽤这样的⽅式排列按钮在把按钮放置到Frame窗体时使⽤⽅向定位的字符串指定按钮的放置位置24 * 这种使⽤⽅向定位的字符串指定按钮的放置⽅式不推荐使⽤⼀旦写错了⽅向字符串就不好检查出来25 * 因为即使是写错了仍然可以编译通过26*/27/*28 * f.add(btnEast,"East");29 * f.add(btnWest,"West");30 * f.add(btnSouth,"South");31 * f.add(btnNorth,"North");32 * f.add(btnCenter,"Center");33*/34 f.setSize(200, 200);35 f.setVisible(true);36 }37 }运⾏结果:第三种布局管理器——GridLayout(表格布局管理器)测试代码:package cn.javastudy.summary;import java.awt.*;public class TestGridLayout {public static void main(String args[]) {Frame f = new Frame("GridLayout");Button btn1 = new Button("btn1");Button btn2 = new Button("btn2");Button btn3 = new Button("btn3");Button btn4 = new Button("btn4");Button btn5 = new Button("btn5");Button btn6 = new Button("bnt6");f.setLayout(new GridLayout(3, 2));/* 把布局划分成3⾏2列的表格布局形式 */f.add(btn1);f.add(btn2);f.add(btn3);f.add(btn4);f.add(btn5);f.add(btn6);f.pack();//根据窗⼝⾥⾯的布局及组件的preferedSize来确定frame的最佳⼤⼩f.setVisible(true);}}运⾏结果:布局练习这⼏种布局管理器可以设置在Frame⾥⾯,也可以设置在Panel⾥⾯,⽽Panel本⾝也可以加⼊到Frame⾥⾯,因此通过Frame与Panel的嵌套就可以实现⽐较复杂的布局实现代码:1package cn.javastudy.summary;23import java.awt.*;4public class TestTenButtons{5public static void main(String args[]){6/*这⾥主要是对显⽰窗体进⾏设置*/7 Frame f = new Frame("布局管理器的嵌套使⽤");8 f.setLayout(new GridLayout(2,1));//把整个窗体分成2⾏1列的表格布局9 f.setLocation(300,400);10 f.setSize(400,300);11 f.setVisible(true);12 f.setBackground(new Color(204,204,255));13/*这⾥主要是对Panel进⾏布局的设置*/14 Panel p1 = new Panel(new BorderLayout());15 Panel p2 = new Panel(new GridLayout(2,1));//p2使⽤2⾏1列的表格布局16 Panel p3 = new Panel(new BorderLayout());17 Panel p4 = new Panel(new GridLayout(2,2));//p4使⽤2⾏2列的表格布局18/*这⾥主要是把按钮元素加⼊到Panel⾥⾯*/19 p1.add(new Button("East(p1-东)"),BorderLayout.EAST);20 p1.add(new Button("West(p1-西)"),BorderLayout.WEST);21 p2.add(new Button("p2-Button1"));22 p2.add(new Button("p2-Button2"));23/*p1⾥⾯嵌套p2,把p2⾥⾯的按钮作为p的中间部分装⼊到p1⾥⾯*/24 p1.add(p2,BorderLayout.CENTER);//把p2作为元素加⼊到p1⾥⾯2526 p3.add(new Button("East(p3-东)"),BorderLayout.EAST);27 p3.add(new Button("West(p3-西)"),BorderLayout.WEST);28for(int i=0;i<4;i++){29 p4.add(new Button("p4-Button"+i));30 }31/*p3⾥⾯嵌套p4,把p4⾥⾯的按钮作为p的中间部分装⼊到p3⾥⾯*/32 p3.add(p4,BorderLayout.CENTER);3334 f.add(p1);//把Panel装⼊Frame⾥⾯,以便于在Frame窗体中显⽰出来35 f.add(p3);3637 }38 }运⾏结果:5.布局管理器总结。

11 GUI

11 GUI

18/56
2.常用组件
2.3 JPanel
import java.awt.*; import javax.swing.*;
public class TestJFrameJPanel
{ public static void main(String args[]) { JPanel panel=new JPanel(); panel.setBackground(Color.GREEN); JFrame frame=new JFrame("窗口名称"); frame.setBackground(Color.BLUE); frame.getContentPane().add(panel); frame.add(panel); frame.setVisible(true); } }
设置缺省的关闭方式: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17/56
2.常用组件
2.2 JFrame
import java.awt.*; import javax.swing.JFrame; public class TestFrame { public static void main(String args[]) { JFrame f=new JFrame("My First Test"); f.setSize(300, 200); f.setBackground(Color.red); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().setBackground(Color.blue); f.setVisible(true); } }

第11章 组件与事件处理(1)

第11章 组件与事件处理(1)
事件处理者等概念,让程序能够响应用户的
操作。
• 了解AWT各个组件的用法及所采用的事件处 理接口。
3
Java程序设计
引例
Java程序设计
11.1图形界面GUI
Graphical User Interface 1.AWT 早期Java的GUI类库是AWT(Abstract Window Toolkit) 2.Swing JDK1.2后,GUI类库是Swing
9
Java程序设计
不同组件
文本框
标签 复选框 单选按钮 文本区
按钮
10
Java程序设计
Swing概述
• 2. javax.swing包 • swing 包 是 Java 基 础 类 库 ( Java Foundation Classes , JFC ) 的 一 部 分 。 Swing 提供了从按钮到可分拆面板和表格的 所有组件。
java.awt 主要包括:
组件——Component
定义了所有的图形化界面元素及绘制方法。
容器——Container
可以包含多个基本组件,以便统一操作和管理
布局管理器——LayoutManager
定义了窗口中组件布局排列的方法
7
Java程序设计
Component类体系结构
Component
• 可以使用以下任一构造函数来创建复选框:
- JCheckbox():创建一个空的复选框,且未被选 中 - JCheckbox(String text):创建一个用给定字符串 作为标签的复选框,且未被选中 - JCheckbox(String text,Boolean on):创建一个标签 由参数text指定的复选框,允许通过参数on设定 复选框的初始状态。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大外软件-徐大外软ຫໍສະໝຸດ 学院(徐)JComboBox
• 构造方法
– JComboBox()
• 一般方法
– public void addItem(String name) – public String getSelectedItem()
大外软件-徐
大外软件学院(徐)
JCheckBox
• 构造方法
– JCheckBox(String s)
一般方法 isSelected()
大外软件-徐
大外软件学院(徐)
JRadioButton
• 构造方法 – JRadioButton(String s) • 一般方法
– setSelected() – isSelected()
大外软件-徐
大外软件学院(徐)
JPasswordField
• 构造方法
– JPasswordField()
大外软件-徐
大外软件学院(徐)
JLabel
• 构造方法
– JLabel() – JLabel(String s)
• 一般方法
– public void setText(String s) – public String getText()
大外软件-徐
大外软件学院(徐)
JButton
• 构造方法
– JButton() – JButton(String s)
大外软件-徐
大外软件学院(徐)
事件处理练习
• 点击“添加”按钮,就会把输入的信息添加 下面的文本区内。如图所示:
大外软件-徐
事件处理
大外软件学院(徐)
事件处理机制
import java.awt.*; import javax.swing.*; class FrameEvent extends JFrame{ JButton b; FrameEvent(String s){ super(s); setLayout(new FlowLayout()); b = new JButton("press me!"); add(b); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } } class TestEvent { public static void main(String[] args) { new FrameEvent("事件处理"); } }
ActionEvent
• 触发时机:
– 文本框获得输入焦点后按回车 – 单击按纽 – 选中某个菜单项 – 选择某个单选按纽
• 监视器ActionListener接口
– void actionPerformed(ActinEvent e) • ActionEvent类中的方法 :
– public Object getSource() :获取事件源 – public String getActionCommand():获取命令串
• 容器类(Container)和组件类(Component) • P222 图9.1
大外软件-徐
大外软件学院(徐)
JFrame
• 构造方法 – JFrame() – JFrame(String s) • 一般方法 – public void setSize(int width,int height) – public void setVisible(boolean b)设置窗 口是可见还是不可见,窗口默认是不可见的。 • public void setDefaultCloseOperation(int operation)单击关闭图标的处理
大外软件-徐
ActionEvent练习
大外软件-徐
ActionEvent练习
• 创建一个标题为“计算平方”的窗口 • 窗口中有两个文本框 • 如果在第一个文本框中输入一个整数,会在第二 个文本框中输出该整数的平方值(如图一) • 如果在第一个文本框中输入一个其他字符,会在 第二个文本框中提示“请输入数字”(如图二)
大外软件-徐
CardLayout
大外软件-徐
GridLayout
• GridLayout的布局策略:把容器划分成若干行乘若干 列的网格区域,组件就位于这些划分出来的小格中。 • GridLayout布局特点:
– 灵活,划分多少网格由程序自由控制 – 组件定位也比较精确
• GridLayout布局的步骤:
• 一般方法
– public void setLabel(String s) – public String getLabel()
大外软件-徐
大外软件学院(徐)
JTextArea
• 构造方法 – TextArea() – TextArea(int x,int y)
• 一般方法 – public void setText(String s) – public String getText() – public void append(String s)
– public void insertUpdate(DocumentEvent e)
大外软件-徐
DocumentEvent
• 一个监听器处理多个事件
大外软件-徐
DocumentEvent练习
1.单词排序 2.右侧文本区不可编辑
大外软件-徐
大外软件学院(徐)
事件处理练习
• 设计一个窗口,该窗 口有3个文本框,在 第一个文本框内输入 一个数字按回车后, 在第二个文本框内显 示该数字的平方,在 第三个文本框内显示 该数字的立方。
演示例题
大外软件-徐
布局管理器练习
大外软件-徐
CardLayout
• 布局特点:使用CardLayout的容器可以容纳多个组件 ,但是实际上同一时刻容器只能从这些组件中选出一个 来显示,就像一叠“扑克牌”每次只能显示最上面一张 一样,这个被显示的组件将占据所有的容器空间。 • 四个步骤:
– – – – 创建布局对象:CardLayout() 容器设置布局:容器.setLayout() 容器添加组件:容器.add() 显示添加的组件:布局.show()
– 创建布局对象:GridLayout(int m,int n) – 设置布局:setLayerout(GridLayout grid) – 容器添加组件:add()
• GridLayout布局的缺点:
– 由于GridLayout布局中每个网格都是相同大小并且强制组 件与网格的大小相同,使得容器中的每个组件也都是相同 的大小,显得很不自然。 – 解决方法:可以使用容器嵌套。
大外软件-徐
ItemEvent
大外软件-徐
ItemEvent练习
• 字体设置
– Font f = new Font(name, Font.BOLD, 32); – 组件.setFont(f);
大外软件-徐
ItemEvent练习
• 一个监视器多个 事件源
大外软件-徐
ItemEvent练习
• CheckBox练习
• 一般方法
– setEchoChar(char c) – char[] getPassword()
大外软件-徐
大外软件学院(徐)
上机练习
大外软件-徐
大外软件学院(徐)
JPanel
• JPanel类及其子类的实例也是一个容器 • 默认布局是FlowLayout型布局 • 必须放入到另一个底层容器里
大外软件-徐
DocumentEvent
• 触发时机
– 文本区(JTexeArea)中的文本发生改变
• DocumentListener
– public void changedUpdate(DocumentEvent e)
– public void removeUpdate(DocumentEvent e)
大外软件-徐
GridLayout
大外软件-徐
GridLayout练习
大外软件-徐
null布局
• 可以通过setBounds(int a,int b,int width,int height)方法精确定位组件位置。 • 空布局容器中添加组件方法:
– add(c)添加组件 – 组件c调用setBounds方法
大外软件-徐
组件及 事件处理
主要内容
窗口 组件 布局 事件 对话框
Java Swing
• 图形用户界面(Graphics User Interface) • Java抽象窗口工具包(Abstract Window Toolkit) • javax.swing包:提供更强大的GUI类
大外软件-徐
Java Swing
大外软件-徐
ActionEvent
大外软件-徐
ActionEvent
• 窗口自身实现ActionListener
大外软件-徐
ActionEvent
class WindowActionEvent extends JFrame
ActionListener
implements
{
JTextField text; JTextArea console; public WindowActionEvent() { setLayout(new FlowLayout()); text = new JTextField(20); console = new JTextArea(5,20); add(text); add(console); text.addActionListener(this); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { String str=text.getText(); //获取封装在事件中的“命令”字符串 console.setText(console.getText()+"\n"+str+":"+str.length()); }
相关文档
最新文档