知识大全 Java图形界面事件监听处理之四种方法

Posted 事件

篇首语:丈夫志四海,万里犹比邻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java图形界面事件监听处理之四种方法相关的知识,希望对你有一定的参考价值。

Java图形界面事件监听处理之四种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  我自 年上大学开始学习Java 由于JavaSE的GUI编程不是很占优势 因而也没有重视过 尤其是事件监听处理 综合看过很多Java讲师的视频 以及网上相关资料 特综合一下 望对大家有帮助 尤其是Java事件编程初学者 愿大家看后不再犹豫用哪种方法而发愁

  大家先看看简单的应用程序截图 考虑一下如何实现

  截图如图一 图二 图三

  

  图一 初始界面截图

  

  图二 蓝色按钮事件处理

  

  图三 弹窗按钮事件处理

  在此列举四种方法

  自身类实现ActionListener接口 作为事件监听器

  通过匿名类处理

  通过内部类处理

  通过外部类处理

  下面依次介绍

  第一种 自身类实现ActionListener接口 作为事件监听器

  这种方法是最基本的 也是初学者经常使用的 我当初即是如此

  import java awt Color;

  import java awt Container;

  import java awt FlowLayout;

  import java awt event ActionEvent;

  import java awt event ActionListener;

  import javax swing JButton;

  import javax swing JDialog;

  import javax swing JFrame;

  public class EventListener extends JFrame implements ActionListener

  private JButton btBlue btDialog;

  /**

  * Java事件监听处理——自身类实现ActionListener接口 作为事件监听器

  *

  * @author codebrother

  */

  // 构造方法

  public EventListener ()

  // 设置标题栏内容

  setTitle( Java GUI 事件监听处理 );

  // 设置初始化窗口位置

  setBounds( );

  // 设置窗口布局

  setLayout(new FlowLayout());

  // 创建按钮对象

  btBlue = new JButton( 蓝色 );

  // 将按钮添加事件监听器

  btBlue addActionListener(this);

  // 创建按钮对象

  btDialog = new JButton( 弹窗 );

  // 将按钮添加事件监听器

  btDialog addActionListener(this);

  // 把按钮容器添加到JFrame容器上

  add(btBlue);

  add(btDialog);

  // 设置窗口可视化

  setVisible(true);

  // 设置窗口关闭

  setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);

  

  // ***************************事件处理***************************

  @Override

  public void actionPerformed(ActionEvent e)

  // 判断最初发生Event事件的对象

  if (e getSource() == btBlue)

  // 获得容器

  Container c = getContentPane();

  // 设置容器背景颜色

  c setColor BLUE);

  

  else if (e getSource() == btDialog)

  // 创建JDialog窗口对象

  JDialog dialog = new JDialog();

  dialog setBounds( );

  dialog setVisible(true);

  

  

  // ***************************主方法***************************

  public static void main(String[] args)

  new EventListener ();

  

  

  第二种 通过匿名类处理

  这是比较好的一种方法 我是在 年开始使用这种方法的

  import java awt Color;

  import java awt Container;

  import java awt FlowLayout;

  import java awt event ActionEvent;

  import java awt event ActionListener;

  import javax swing JButton;

  import javax swing JDialog;

  import javax swing JFrame;

  public class EventListener extends JFrame

  private JButton btBlue btDialog;

  /**

  * Java事件监听处理——匿名类处理

  *

  * @author codebrother

  */

  // 构造方法

  public EventListener ()

  // 设置标题栏内容

  setTitle( Java GUI 事件监听处理 );

  // 设置初始化窗口位置

  setBounds( );

  // 设置窗口布局

  setLayout(new FlowLayout());

  // 创建按钮对象

  btBlue = new JButton( 蓝色 );

  // 添加事件监听器(此处即为匿名类)

  btBlue addActionListener(new ActionListener()

  // 事件处理

  @Override

  public void actionPerformed(ActionEvent e)

  // 获得容器 设置容器背景颜色

  Container c = getContentPane();

  c setColor BLUE);

  

  );

  // 创建按钮对象 并添加事件监听器

  btDialog = new JButton( 弹窗 );

  btDialog addActionListener(new ActionListener()

  // 事件处理

  @Override

  public void actionPerformed(ActionEvent e)

  // 创建JDialog窗口对象

  JDialog dialog = new JDialog();

  dialog setBounds( );

  dialog setVisible(true);

  

  );

  // 把按钮容器添加到JFrame容器上

  add(btBlue);

  add(btDialog);

  // 设置窗口可视化

  setVisible(true);

  // 设置窗口关闭

  setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);

  

  // ***************************主方法***************************

  public static void main(String[] args)

  new EventListener ();

  

  

  第三种 通过内部类处理

  该种方法更符合面向对象编程的思想

  import java awt Color;

  import java awt Container;

  import java awt FlowLayout;

  import java awt event ActionEvent;

  import java awt event ActionListener;

  import javax swing JButton;

  import javax swing JDialog;

  import javax swing JFrame;

  public class EventListener extends JFrame

  private JButton btBlue btDialog;

  /**

  * Java事件监听处理——内部类处理

  *

  * @author codebrother

  */

  // 构造方法

  public EventListener ()

  // 设置标题栏内容

  setTitle( Java GUI 事件监听处理 );

  // 设置初始化窗口位置

  setBounds( );

  // 设置窗口布局

  setLayout(new FlowLayout());

  // 创建按钮对象

  btBlue = new JButton( 蓝色 );

  // 添加事件监听器对象(面向对象思想)

  btBlue addActionListener(new ColorEventListener());

  btDialog = new JButton( 弹窗 );

  btDialog addActionListener(new DialogEventListener());

  // 把按钮容器添加到JFrame容器上

  add(btBlue);

  add(btDialog);

  // 设置窗口可视化

  setVisible(true);

  // 设置窗口关闭

  setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);

  

  // 内部类ColorEventListener 实现ActionListener接口

  class ColorEventListener implements ActionListener

  @Override

  public void actionPerformed(ActionEvent e)

  Container c = getContentPane();

  c setColor BLUE);

  

  

  // 内部类DialogEventListener 实现ActionListener接口

  class DialogEventListener implements ActionListener

  @Override

  public void actionPerformed(ActionEvent e)

  // 创建JDialog窗口对象

  JDialog dialog = new JDialog();

  dialog setBounds( );

  dialog setVisible(true);

  

  

  // ***************************主方法***************************

  public static void main(String[] args)

  new EventListener ();

  

  

  第四种 通过外部类处理

  这种我个人不常用

  import java awt Color;

  import java awt Container;

  import java awt FlowLayout;

  import java awt event ActionEvent;

  import java awt event ActionListener;

  import javax swing JButton;

  import javax swing JDialog;

  import javax swing JFrame;

  public class EventListener extends JFrame

  private JButton btBlue btDialog;

  /**

  * Java事件监听处理——外部类处理

  *

  * @author codebrother

  */

  // 构造方法

  public EventListener ()

  // 设置标题栏内容

  setTitle( Java GUI 事件监听处理 );

  // 设置初始化窗口位置

  setBounds( );

  // 设置窗口布局

  setLayout(new FlowLayout());

  // 创建按钮对象

  btBlue = new JButton( 蓝色 );

  // 将按钮添加事件监听器

  btBlue addActionListener(new ColorEventListener(this));

  // 创建按钮对象

  btDialog = new JButton( 弹窗 );

  // 将按钮添加事件监听器

  btDialog addActionListener(new DialogEventListener());

  // 把按钮容器添加到JFrame容器上

  add(btBlue);

  add(btDialog);

  // 设置窗口可视化

  setVisible(true);

  // 设置窗口关闭

  setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);

  

  // ***************************主方法***************************

  public static void main(String[] args)

  new EventListener ();

  

  

  // 外部类ColorEventListener 实现ActionListener接口

  class ColorEventListener implements ActionListener

  private EventListener el;

  ColorEventListener(EventListener el)

  this el = el;

  

  @Override

  public void actionPerformed(ActionEvent e)

  Container c = el getContentPane();

  c setColor BLUE);

  

  

  // 外部类DialogEventListener 实现ActionListener接口

  class DialogEventListener implements ActionListener

  @Override

  public void actionPerformed(ActionEvent e)

  // 创建JDialog窗口对象

  JDialog dialog = new JDialog();

  dialog setBounds( );

  dialog setVisible(true);

  

  

  你可能注意到为什么我写了两个监听事件 就是加以区分这些方法的区别

  第一种的监听处理部分 如果有多个(我就写过三十多个的事件监听 包含菜单栏按钮事件监听和工具栏按钮事件监听) 那就需要一个个去判断 从理论上说是影响程序速度的

  第二种和第三种比较常用 如果程序的监听事件比较少 可以用第二种 匿名类很合适

  第三种符合面向对象编程(可以设置内部类只提供自身类使用 而且方便使用自身类的资源) 尤其是适合多个监听事件的处理 当然也适合第二种方法情况

  第四种是外部类 如果多个监听事件相同 就可以选用此种方法

cha138/Article/program/Java/hx/201311/26053

相关参考

知识大全 在JAVA中实现图形界面退出(已测试)

在JAVA中实现图形界面退出(已测试)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!import&

知识大全 js监听键盘事件示例代码

本文为大家详细介绍下使用js如何监听键盘事件具体实现代码如下感兴趣的朋友可以参考下希望对大家有所帮助 复制代码代码如下:cha138/Article/program/Java/JS

知识大全 让界面更加绚丽 Java SE 6.0四种新功能

让界面更加绚丽JavaSE6.0四种新功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 有发生过公安监听别人电话的事件吗

有发生过公安监听别人电话的事件吗?很遗憾的告诉阁下:结果是肯定的!因侦查案情须要,履行一定的手续经有关机关批准之后,是可以对嫌疑人的电话进行监听的。非经法定程序是不允许这样做的,这可以放心的。世界上有

知识大全 Java实现网络监听

Java实现网络监听  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //tcpServerjav

知识大全 java监听文件Error listenerStart错误

java监听文件ErrorlistenerStart错误  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 用Delphi打造图形界面的Ping程序

用Delphi打造图形界面的Ping程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘 要本

知识大全 java的事件处理

  在JAVA程序设计中事件的处理是非常重要的尤其是在需要自定义事件和设计JavaBean时对事件的处理过程有一个完整的认识对于编程是很有帮助的    下面用一个演示性的例子来说明事件及其处理过程  

知识大全 浅析Java语言的事件处理快捷回复

浅析Java语言的事件处理快捷回复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在JAVA程序

知识大全 浅析Java与C#的事件处理机制(一)

浅析Java与C#的事件处理机制(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java与