Java Swing事件是Java GUI应用程序中的一个重要组成部分,它允许用户与应用程序进行交互。Swing事件是指当用户在GUI上执行某些操作时,将触发的特定功能。例如,当用户单击某个按钮时,将触发一个特定的功能。
Swing事件是通过使用监听器来处理的。监听器是一种特殊的对象,它可以监听特定类型的事件并根据需要执行特定的功能。例如,当用户单击某个按钮时,可以使用ActionListener来处理该事件。ActionListener会在单击该按钮时检测到该事件,并根据需要执行特定的功能。
// 创建一个 ActionListener 对象 ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { // 执行相关功能 } }; // 将 ActionListener 注册到 button 组件上 button.addActionListener(listener);
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); } }
此示例显示如何从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); } }
MyBatis-Plus 条件构造器-AbstractWrapperor()or(boolean condition)拼接OR注意事项:主动调用or表示紧接着下一个方法不是用...
使用 Spring 开发时,进行配置主要有两种方式,一是 xml 的方式,二是 java config 的方式。Spring 技术自身也在不断的发展和改...
Spring 中的自定义事件编写和发布自己的自定义事件有许多步骤。按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件。...
JSP教程 -JSP数据库SELECT操作以下示例显示如何在JSP中使用JTSL使用SQL SELECT语句。%@ page import=java.io.*,java.util.*,java...
sql:param 标签 sql:param标签与sql:query标签和sql:update标签嵌套使用,用来提供一个值占位符。如果是一个null值,则将占...