import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class AbstractActionDemo1 extends JFrame {
JTextArea theArea = null;
ToolBarAction pushAction = null;
public AbstractActionDemo1(){
super("AbstractAction");
theArea = new JTextArea();
theArea.setEditable(true);
this.getContentPane().add(new JScrollPane(theArea));
pushAction = new ToolBarAction("按我",null);
JMenuBar menuBar = buildJMenuBar();
menuBar.setOpaque(true);
JToolBar toolBar = buildJToolBar();
this.getContentPane().add(toolBar,BorderLayout.NORTH);
this.setJMenuBar(menuBar);
this.setVisible(true);
this.setBounds(new Rectangle(200,200,400,200));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String...args){
new AbstractActionDemo1();
}
public JMenuBar buildJMenuBar(){
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');
fileMenu.add(pushAction);
JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
return menuBar;
}
public JToolBar buildJToolBar(){
JToolBar toolBar = new JToolBar();
toolBar.add(pushAction);
toolBar.setFloatable(true);
return toolBar;
}
class ToolBarAction extends AbstractAction{
public ToolBarAction(String name,Icon icon){
super(name,icon);
}
@Override
public void actionPerformed(ActionEvent e){
theArea.append("這是Action的好處\n");
}
}
}
AbstractAction是一個抽象類,實現Action接口,而Action接口又繼承了ActionListener接口,因此AbstractAction具有監聽ActionEvent的功能,用戶可以重寫actionPerformed()來處理ActionEvent事件。
JToolBar JMenu JPopupMenu都具有add(Action a)的方法,因此可以利用相同的AbstractAction類構造出不同的組件。
參考:深入淺出Java Swing程序設計
分享到:
相关推荐
1. **AbstractAction类**:此程序使用了`AbstractAction`类作为自定义动作的基础类。`AbstractAction`是Swing框架提供的抽象类,用于封装用户界面上某个操作的行为。通过继承`AbstractAction`并重写其方法(如`...
Action printAction = new AbstractAction("Print...", getIcon("gfx/print.gif")) { public void actionPerformed(ActionEvent evt) { doPrint(); } }; Action closeAction = new AbstractAction("Close") {...
一般不直接实现 Action 接口,而是使用继承自 Action 的抽象类 AbstractAction,该类的实现了 Action 接口中的一般方法,而且保留了 actionPerformen 方法留给用户实现。 5. 使用 Action 的步骤 使用 Action 的...
- **AbstractAction类**:在Struts2中,Action类无需继承特定的类或实现特定的接口,但在实际开发中通常会继承`ActionSupport`类。建立一个抽象基类`AbstractAction`,并重写`execute()`方法,可以提高代码的复用性...
在使用Action接口时,通常不直接实现Action接口,而是使用继承自Action的抽象类AbstractAction,该类实现了Action接口中的大多数方法,并保留了actionPerformed方法留给用户实现。 使用Action的步骤包括继承...
内部类 private class RightListenerImpl extends AbstractAction 内部类 - 向右按键事件。 private class DownListenerImpl extends AbstractAction 内部类 - 向下按键事件。 private class DownListenerImpl ...
public abstract class AbstractAction extends ActionSupport { // 可以在这里定义所有Action类公用的方法和属性 // 例如:初始化方法、错误处理等 } ``` #### 四、具体实现 接下来,我们将详细介绍如何使用...
为了方便,我们通常使用已经实现了大部分Action接口方法的AbstractAction类作为基类,重写actionPerformed()方法来实现自定义的行为。 在实际编程中,我们可以创建一个TextAction类继承自AbstractAction,然后在...
Swing提供了`AbstractAction`类,它不仅是一个`ActionListener`,还允许设置动作名称、图标等属性。你可以创建`AbstractAction`的实例,然后将其添加到按钮上: ```java JButton button = new JButton(new ...
根据提供的文件信息,本文将详细解析“Struts2 + Spring2 + Hibernate3”技术栈的集成与应用。本文主要从项目准备、环境...此外,通过自定义 `AbstractAction` 类和 `Pager` 类,进一步提高了项目的可复用性和扩展性。
为了便于后续的开发工作,我们首先定义一些基础的公共类,如`AbstractAction`类,用于被其他Action类继承。 **AbstractAction类** Struts2和Struts1.x的一个显著差异在于Struts2采用了Pull-MVC架构,这意味着...
内部类 private class ButtonListener extends AbstractAction 按钮事件。包括+、-、*、/、1/x、数字等按钮事件。 此类继承AbstractAction 类名称 CalculateButton 类描述 定制自己的按钮类。练习自己定制按钮。...
- 在Struts2中,通常会定义一个基础的Action类,如`AbstractAction`,其他具体的Action类继承自这个基础类。 - 这种设计模式有利于代码复用和统一处理某些通用逻辑。 #### 特性 - **无需继承特定类**:与Struts1.x...
1. 动作时间监听器的实现方式:在Java Swing编程中,可以有两种方式实现动作事件监听器,一是实现`ActionListener`接口并重写`actionPerformed`方法,二是继承`AbstractAction`或`ActionAdapter`类。但题目中提到的`...
根据提供的文件信息,我们可以分析出该Java代码片段与一个名为“BuyEquipAction”的类有关,这个类继承自`AbstractAction`。此代码片段是用于处理用户购买装备逻辑的一部分,涉及到了参数验证、权限检查以及资源消耗...
- 定义了一系列的`AbstractAction`子类,如`NewAction`、`OpenAction`等,每个子类覆盖了`actionPerformed`方法以执行相应的操作。 - 例如,在`NewAction`类中,`actionPerformed`方法通过设置一个新的`...
1. **AbstractAction类**:在Struts2中,尽管Action类理论上无需继承特定的类,但在实际开发中,继承`ActionSupport`类并重写`execute()`方法是一种常见做法。通过创建一个抽象的`AbstractAction`类,我们可以定义...