举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > java swing事件 Java Swing教程 - 事件

java swing事件 Java Swing教程 - 事件

2023-04-02 02:31 SWING教程

java swing事件 Java Swing教程 - 事件

java swing事件

Java Swing事件是Java GUI应用程序中的一个重要组成部分,它允许用户与应用程序进行交互。Swing事件是指当用户在GUI上执行某些操作时,将触发的特定功能。例如,当用户单击某个按钮时,将触发一个特定的功能。

Swing事件是通过使用监听器来处理的。监听器是一种特殊的对象,它可以监听特定类型的事件并根据需要执行特定的功能。例如,当用户单击某个按钮时,可以使用ActionListener来处理该事件。ActionListener会在单击该按钮时检测到该事件,并根据需要执行特定的功能。

// 创建一个 ActionListener 对象 
ActionListener listener = new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
        // 执行相关功能 
    } 
}; 
// 将 ActionListener 注册到 button 组件上 
button.addActionListener(listener); 

Java Swing教程 - 事件

Java Swing教程 - 事件


Swing中的事件是用户采取的动作。 例如,按下按钮,在键盘上向下/向上按下一个键。

事件的源是生成事件的组件。例如,当我们按下一个JButton时,点击的事件发生在那个JButton上。 在这种情况下,JButton是点击事件的来源。

事件表示在源组件上发生的操作。

行动事件

ActionListener接口有一个称为actionPerformed()的方法。接口声明如下:

public interface  ActionListener extends EventListener {
    void  actionPerformed(ActionEvent event);
}

所有事件侦听器接口都从java.util.EventListener接口继承。

EventListener接口是一个标记接口,它没有任何方法。

当按下JButton时,将调用其所有注册的Action侦听器的actionPerformed()方法。

以下代码使用lambda表达式向JButton添加Actionlistener:

closeButton.addActionListener(e ->  System.exit(0));

以下代码显示了如何为关闭按钮添加点击事件处理程序以退出Swing应用程序。

import java.awt.Container;
//from  w w  w. ja v a 2  s  .c o  m
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    // Add a close button
    JButton closeButton = new JButton("Close");
    contentPane.add(closeButton);

    closeButton.addActionListener(e -> System.exit(0));
    
    frame.pack();
    frame.setVisible(true);
  }
}


例子

以下代码将操作侦听器添加到具有匿名类的按钮。

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.JFrame;

public class Main {
  static int counter;

  public static void main(String[] args) {

    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    JButton counterButton = new JButton("Clicked #0");
    JButton closeButton = new JButton("Close");
    frame.setLayout(new FlowLayout());
    contentPane.add(closeButton);
    contentPane.add(counterButton);

    counterButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        counterButton.setText("Clicked #" + counter++);
      }
    });

    closeButton.addActionListener(e -> System.exit(0));

    frame.pack();
    frame.setVisible(true);
  }
}


实施例2

此示例显示如何从JButton获取操作命令。 动作命令是一个字符串对象,我们可以使用它来计算哪个按钮被点击。

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    // Add a close button
    JButton closeButton = new JButton("Close");
    contentPane.add(closeButton);

    closeButton.addActionListener(e ->{
      System.out.println(e.getActionCommand());
      System.exit(0);
    } );
    
    frame.pack();
    frame.setVisible(true);
  }
}

鼠标事件

我们可以处理鼠标事件,例如鼠标点击,进入,退出,按下和释放组件。

MouseEvent类的一个对象表示组件上的鼠标事件。

要处理Mouse事件,请使用MouseListener接口。这里是如何声明接口:

public interface MouseListener extends EventListener {
  public void mouseClicked(MouseEvent e);

  public void mousePressed(MouseEvent e);

  public void mouseReleased(MouseEvent e);

  public void mouseEntered(MouseEvent e);

  public void mouseExited(MouseEvent e);
}

MouseListener接口有五个方法,我们不能使用lambda表达式来创建鼠标事件处理程序。

当发生特定的鼠标事件时,将调用MouseListener接口的一种方法。

MouseEvent类具有向我们提供有关鼠标事件的详细信息的方法:

getClickCount()方法返回鼠标点击次数。getX()和getY()方法返回鼠标的x和y位置。getXOnScreen()和getYOnScreen()方法返回鼠标的绝对x和y位置。

以下代码演示了JButton的鼠标输入和退出事件。

import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//from  w  w  w.ja  v  a  2  s .co m
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    JButton closeButton = new JButton("Close");
    contentPane.add(closeButton);

    closeButton.addActionListener(e -> System.exit(0));
    // Add a MouseListener to the JButton
    closeButton.addMouseListener(new MouseListener() {
      @Override
      public void mouseClicked(MouseEvent e) {
      }

      @Override
      public void mousePressed(MouseEvent e) {
      }

      @Override
      public void mouseReleased(MouseEvent e) {
      }

      @Override
      public void mouseEntered(MouseEvent e) {
        closeButton.setText("Mouse has  entered!");
      }

      @Override
      public void mouseExited(MouseEvent e) {
        closeButton.setText("Mouse has  exited!");
      }
    });
    frame.pack();
    frame.setVisible(true);
  }
}

事件适配器

Swing包括一些事件侦听器接口的方便类。类名称以Adapter结尾。

Adapter类被声明为抽象,并且实现了一种Listener接口。

Adapter类为事件侦听器接口中的所有方法提供了空实现。

并非所有事件侦听器接口都具有对应的适配器类。具有多个方法的事件侦听器接口具有对应的适配器类。

以下代码在上面的代码中重写了事件处理程序。

import java.awt.Container;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JFrame");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    JButton closeButton = new JButton("Close");
    contentPane.add(closeButton);

    closeButton.addActionListener(e -> System.exit(0));
    // Add a MouseListener to the JButton
    closeButton.addMouseListener(new  MouseAdapter() {
      @Override
      public void  mouseEntered(MouseEvent e)  {
        closeButton.setText("Mouse has  entered!");
      }

      @Override
      public void  mouseExited(MouseEvent e)  {
        closeButton.setText("Mouse has  exited!");
      }
      });
    frame.pack();
    frame.setVisible(true);
  }
}
阅读全文
以上是鳄鱼CMS为你收集整理的java swing事件 Java Swing教程 - 事件全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们