您现在的位置是:首页 >

事件监听器是什么 Java图形界面事件监听处理之四种方法

火烧 2021-05-19 12:09:04 1072
Java图形界面事件监听处理之四种方法   我自 年上大学开始学习Java 由于JavaSE的GUI编程不是很占优势 因而也没有重视过 尤其是事件监听处理 综合看过很多Java讲师的视频 以及网上相关

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

  我自 年上大学开始学习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 事件监听处理 );

  // 设置初始化窗口位置

事件监听器是什么 Java图形界面事件监听处理之四种方法

  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);

  }

  }

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

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

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

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

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

lishixinzhi/Article/program/Java/hx/201311/26053  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码