请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要

请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要,第1张

在编程语言中的事件就是当某组件的状态发生改变的时候通知其它对象发生了这件事,我们在这里只讨论图形界面的组件,有可能是按钮、文本框、菜单、多选等等。

对于通知其它对象的方法一般有两种模式:

1)推模式:状态改变的对象通知其它对象;

2)拉模式:其他对象不停的查看该对象状态是否发生改变。

例如我去小卖部买烟,要一包红塔山,结果小卖部没货了,如果我把我得电话给小卖部老板,烟如果到了请给我打电话,这就是推模式。如果我每隔5分钟来小卖部看一看烟是否到了,这就是拉模式。

Java采用的是推模式,所有监听事件都基于观察者设计模式,所以我们也可以自己给予观察者开发出专用的监听器。

我们JavaGUI程序开发,会经常使用到监听事件,比如一个小计算器的程序,当我们点击“计算”按钮后,希望程序将两个文本框中的数字相加,那么就必需给这个按钮添加事件:

1)按钮的动作触发事件接口是ActionListener接口(不同组件要实现不同功能需要有不同的接口),我们需要写一个事件类,实现ActionListener接口,接口中需要我们实现的方法actionPerformed(ActionEvent e)代表了当按钮事件被触发后需要程序做些什么,比如在这里用Systemoutprintln("你好")在控制台打印你好,这一步就相当于我把电话写在纸上。

2)调用JButton组件实例的addActionListener(ActionListener al)方法(其它事件也有相应的方法)将上面写的事件类注册到这个按钮上,这就相当于我把写着电话的纸条交给小卖部的老板。

上述两部工作完成后,这个按钮的事件就添加完成了,程序运行,点击按钮,动作事件被触发,控制台显示“你好”。

实例:

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJButton;

import javaxswingJFrame;

/

一个简单的按钮事件教学实例

@author 米强

/

public class Test extends JFrame {

public Test() {

super("简单的按钮事件实例");

// 一个按钮的实例化对象

JButton button = new JButton("按钮");

// 构造一个事件类,该类实现了ActionListener动作接口

MyActionListener action = new MyActionListener();

// 为这个按钮添加动作事件(匿名类等写法在这里不做讨论)

buttonaddActionListener(action);

// 将按钮添加到窗体中

getContentPane()add(button);

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setSize(300, 200);

setLocationRelativeTo(null);

setVisible(true);

}

public static void main(String[] args) {

new Test();

}

}

/

事件类,实现ActionListener接口

@author 米强

/

class MyActionListener implements ActionListener {

/

动作事件出发后所执行的方法

/

public void actionPerformed(ActionEvent e) {

// 在控制台打印“你好”

Systemoutprintln("你好");

}

}

一个应用程序有多复杂都无关紧要 用户并需要去阅读你的文档 他们试着自己解决怎样去完成给定的任务 当其它所有的事都以失败告终时 他们更倾向于去问别的人而不是阅读文档 因此 作为软件开发者 使我们的应用程序尽可能的容易和直观 这完全取决于我们 在这篇文章中 我将会介绍你可以用来达到这一目标的几种方法中的一种 那就是用提供线索来帮助用户理解他的应用程序 引导用户 让应用程序用起来更容易的最常用的方法之一是对用户界面的每一个要素提供细小的线索――提示 The Swing框架以工具提示窗口的形式提供了对这一方法的执行 你可以通过调用它的setToolTipText的方法来为所有的Swing组件设置一个工具提示 当工具提示设好以后 任何时候只要鼠标指针的指示器进入其中的组件 一个包含着文本(提示)的小窗口会在组件的上方显示一会儿 这一提示的目的是让用户知道那些组件是用来干什么用的 怎样使用它们 以及你觉得哪些信息是有用的 尽管使用工具提示很直截了当 但还是有一些缺点 由于Swing的执行并不超出文本 因而工具提示只适用于很小的提示 你必须等著工具提示显示出来 然后在它消失之前阅读它 由于提示是显示在组件上面的 使它们看起来多少有些打扰 正因为这个原因 它们在诸如菜单选项的这样的组件上看起来并不那么好 另一种常用的方法是将提示显示在应用程序的状态栏上 这一观点与前面所讲的一样 也就是说 当鼠标指针指示器进入组件时提示会显示出来 而当鼠标指针移开时它也就消失了 但是 由于提示是显示在专为提示保留的位置上 它是可以选择的 因而并不会遭受到工具提示的不良影响 执行鼠标在上面时的提示 不幸的是 Swing并不为状态栏提示提供内置支持 然而 你自己执行状态栏提示并不困难 你需要做的基本上就是为每一个你想要显示的组件注册一个鼠标监听器 并实现MouseListener接口里的mouseEnter方法和mouseExited方法 mouseEntered这一方法将为组件显示提示 mouseExited则将其移开 事件源可以用来识别组件 并选择要显示哪些提示 这样一来 你就不需要为每一个组件注册一个不同的鼠标监听器 MouseOverHintManager(列表A)是一种可再次使用的类 它提供了状态栏提示的执行 它的使用是直截了当的 只要通过一个Jlabel实例去构造一个MouseOverHintManager实例 就可以用来显示提示 调用addHintF方法或者为每一个你想要的组件设置一个提示 调用方法enableHints来为用户界面顶端的容器(视窗 构架 对话框 等等)等用户界面来设置提示 MouseOverHintManager方法的执行非常接近前面所介绍的 AddHint or方法 接受到一个作为参数的成分所涉及的以及与之相对应的提示 将它们保存在一个Map中以备以后修复时用 可以注意到那些提示是保存在WealHashMan的实例中的 这样一来 在没有更多的涉及到相应的组件时 如果需要的话它们能够自动垃圾回收 正因为这样 我们不需要找一种移走这些提示的方法 EnableHints这一方法将MouseOverHintManager作为一个鼠标监听器添加到所有的作为参数被传递的顶端组件中 如子组件 菜单元素等等 MouseEntered方法使用源事件 也就是鼠标指针指示器所进入的组件 这一方法把这些源事件作为一个从Map重新得到它的提示的线索 并在构造器所保存的Jlabel上显示它 MouseExited方法则将Jlabel设置成空白来清除提示 注意特殊案例 那些提示之所以有如所期望的那样显示是因为有一些值得注意的小窍门 首先 注意一下mouseEntered方法是为产生事件的组件而设置那些提示的 如果组件没有提示的话 mouseEntered会检查它的父类是否有 这一过程会持续到达到顶端的组件或找到显示给用户的提示的时候 这一逻辑允许你为一个容器设置一个提示 就像一个面板 让它所有的孩子显示相同的提示 或者为父亲设置一个提示并且为孩子设置另外一个不同的提示 另一个窍门是getHintFor方法 mouseEntered调用它来为一个组件设置提示 如果它接受的作为一个参数的组件没有提示的话 它会检测一些特殊的案例 如果那些组件是一个Jlabel或JtableHeader 这一方法将会分别返回那些附有Jlabel组件的提示或Jtable的提示 用这样的方法 你就不需要为一个组件设一个提示然后又再为它的标签设一个提示 纵使它们以单独的组件的形式显示也无妨 使提示进入工作中 MouseOverHintDemo(列表B)是一个用来说明怎样用MouseOverHintManager类的简单例子 它只创建了一个有一个状态栏来显示提示和一些最常用的Swing组件的Jframe 这个例子很是简单明了 它仅仅创制了用户界面的所有组件 为它们设置提示 建立应用程序的主窗口 调用MouseOverHintManager enableHints 注意到在建立用户界面以后 调用enableHints作为最后的 *** 作是很重要的 因此enablehints可以为所有的组件注册鼠标监听器 这是必须的 这样一来 MouseOverHintManager从所有组件那里接受鼠标事件 还可以为每一案例选择合适的提示 运行这个例子时会显示有着少数几个控制装置的简单窗口 在那些组件和菜单元素上移动鼠标 可以看见在每一个应用程序的状态栏显示一个提示 注意一下有两个无线电按纽显示相同的提示 它们实际上是在他们的父面板上设置的 使用提示是让应用程序用起来更容易的重要方法 状态栏提示相对Swing工具提示是一个可选择的办法 而且它们很容易执行 用户几乎不需要阅读你的说明文档 因而 作为软件开发者 让我们的应用程序尽可能的容易和直观完全取决于我们 如果你在写一个JavaGUI 这是一个帮助添加状态栏提示的简单方法 lishixinzhi/Article/program/Java/JSP/201311/19588

以上就是关于请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要全部的内容,包括:请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要、用状态栏提示改善JavaGUI、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9727169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存