关于ActionListener的响应问题,就我的理解可以有两种方法。第一种就是你放到一个新的类里面,实现ActionListener接口,然后写好public void actionPerformed(ActionEvent e)的方法。这种当继承自JFrame还是蛮有用的,但是如果是一个在public static void main(String[] args)中建立一个JFrame,然后对里面的(比如按钮)实现监听,那么去实现ActionListener接口就不那么合适了(哎,很多都是当你做过后才知道什么是合适的),不过Java提供了另一种解决方案:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ActionListenerTest ...{
public static void main(String[] args) ...{
JFrame frame = new JFrame("Button Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton jbClose = new JButton("Close the Frame");
jbClose.addActionListener(new ActionListener () ...{
public void actionPerformed(ActionEvent e) ...{
if (e.getSource().equals(jbClose)) ...{
System.exit(0);
}
}
}
);
frame.add(jbClose);
frame.pack();
frame.setVisible(true);
}
}
也就是在addActionListener的参数中新定义到一个ActionListenner并重写它的actionPerformed。不过要注意的是,这个actionPerformed一定要是public的,不然权限不够。还有就是里面用到的组件在外部必须声明为final的,这点也许会造成些许使用的限制。
另一种其实是很常用的那种,前面也用到过,不过这里再写一遍好了,翻来翻去很麻烦的。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonFrame extends JFrame implements ActionListener ...{
JButton jbClose = null;
public ButtonFrame() ...{
super("ButtonFrame Test");
jbClose = new JButton ("Close the Frame in ButtonFrame");
jbClose.addActionListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(jbClose);
this.pack();
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) ...{
if (e.getSource().equals(jbClose)) ...{
System.exit(0);
}
}
public static void main(String[] args) ...{
ButtonFrame bf = new ButtonFrame();
}
}
两个程序的效果是一样的,都是点击了按钮后就结束程序
转载
分享到:
相关推荐
Java Swing是Java标准库中的一个组件集合,用于构建桌面应用程序用户界面。它是Java Foundation Classes (JFC)的一部分,提供了一套轻量级的GUI(图形用户界面)组件,支持丰富的交互功能。本离线API文档详细阐述了...
同时,Swing支持事件处理,通过实现EventListener接口,开发者可以为组件添加事件监听器,如ActionListener和MouseListener,以响应用户的操作。 此外,Swing提供了许多高级特性,如布局管理器(Layout Manager),...
在Java中,Swing和AWT都是用于创建桌面应用程序的工具包,但Swing是完全由Java实现的,因此具有更好的可移植性,并且提供了更多的定制选项。 Swing提供了丰富的组件集,包括JButton、JLabel、JTextField、...
在Swing中,控制器通常体现在事件处理器和监听器上,如ActionListener、MouseListener等。当用户执行一个操作,如点击按钮,控制器会接收到对应的事件,然后根据需要更新模型或改变视图的状态。例如,你可以为一个...
Java Swing 中三种事件处理方法之比较 Java Swing 是 Java 中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的强大工具。Java Swing 组件自动产生各种事件来响应用户行为。如当用户点击按钮或选择菜单...
通过实现EventListener接口或使用匿名内部类,开发者可以添加ActionListener、MouseListener、KeyListener等来响应用户操作,如点击按钮、移动鼠标或按键。 3. **布局管理器**:Swing提供了多种布局管理器,如...
通过添加监听器,比如ActionListener、MouseListener或KeyListener,我们可以捕获并响应用户的点击、鼠标移动和按键等操作。 此外,Swing还提供了一些高级功能,如JTable用于显示和编辑表格数据,JTree用于展示树状...
通过监听器接口,如ActionListener、MouseListener等,开发者可以为组件添加事件响应,使得用户与界面的交互更加动态和直观。例如,点击按钮时执行特定的代码,或者当鼠标悬停在某个组件上时改变其外观。 为了创建...
在Java中,事件处理是指对用户交互的响应。我们使用了ActionListener和KeyListener来处理用户的交互事件。在本文中,我们使用了ActionListener来处理按钮的点击事件,而KeyListener用于处理键盘输入事件。 三、...
Swing_hack是一个关于Java Swing库的专题,它聚焦于如何优化、调整和解决Swing组件中的各种问题,以及如何利用Swing进行高效且复杂的GUI编程。Swing是Java平台上用于构建图形用户界面(GUI)的工具包,它是Java ...
事件处理是 Swing 的另一个关键部分,通过实现 ActionListener 或 MouseListener 接口,你可以为组件添加事件监听器,响应用户的交互行为。 此外,Swing 还引入了 JTabbedPane,允许你在同一窗口内创建多个选项卡,...
Swing中的ActionListener、MouseListener等接口可用于添加事件监听代码,确保用户交互的正确响应。 7. **布局管理**:在Swing应用中,布局管理器负责控制组件在容器内的排列和大小。常见的布局管理器有FlowLayout、...
Swing框架中的ActionListener接口实现类通常作为控制器,用于监听用户的交互行为并作出响应。模型则是一个普通的Java类,可以是一个简单的Java对象或者是一个数据库实体类。 Swing中实现MVC模式可以有不同的映射...
3. **事件处理**:Swing中的事件处理主要通过监听器(Listener)实现,如ActionListener,MouseListener,KeyListener等。开发者可以注册监听器来响应用户的操作,比如点击按钮,选择列表项等。 4. **布局管理器**:...
在Swing中,你可以创建丰富的、交互式的桌面应用。本篇将深入探讨Java Swing工具箱中的关键概念和技术。 首先,Swing 提供了大量组件(JComponents),这些组件用于构建用户界面,例如按钮(JButton)、文本框...
学习Swing不仅需要理解组件的使用,还需要掌握如何通过事件处理和回调函数响应用户的交互。通过不断地实践和编写小型Swing应用,可以逐渐熟悉这个强大的GUI框架。 在“sinodataLearn”这个文件中,可能包含了关于...
你需要为组件添加对应的ActionListener、MouseListener等,然后定义相应的方法来响应这些事件。 7. **模型-视图-控制器(MVC)**:Swing的设计遵循MVC模式,使得代码结构清晰,易于维护。例如,JTable组件就包含了...
在Swing中,控制器通常以事件处理器的形式存在,比如`ActionListener`、`ItemListener`等。当用户操作视图时(如点击按钮),控制器会被调用,然后执行相应的业务逻辑,可能涉及修改模型数据或触发其他视图的更新。 ...
通过实现对应的Listener接口(如ActionListener、MouseListener等),开发者可以添加事件处理器方法来响应特定的用户行为。 4. **模型-视图-控制器(MVC)架构**:Swing组件遵循MVC设计模式,其中JTable和JList等...
为了响应用户选择的日期变化,你可以添加`PropertyChangeListener` 或 `ActionListener` 到日期控件上。 ```java datePicker.addPropertyChangeListener(e -> { if ("value".equals(e.getPropertyName())) { Date...