当前位置: 首页 > 面试题库 >

如何为多个JButton创建单个ActionListener

胡沈义
2023-03-14
问题内容

我正在使用MVC创建一个基本的计算器。到目前为止,我正在改编一个教程,该教程仅将两个用户输入的值加在一起。

目前,我要添加到视图中的每个按钮都有其自己的侦听器,可以。但是,根据教程的控制器每个按钮只有一个ActionListener内部类。这重复了大量代码。

如何为所有按下的按钮创建一个ActionListener类,并在按下的按钮的ID上使用case语句?

在视图中注册oneButton

void oneListener(ActionListener listenForOneButton){    
    oneButton.addActionListener(listenForOneButton);
}

在Controller内部类中为oneButton实现ActionListener

class oneListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        int previousNumber, displayNumber = 0;          
        try{
            previousNumber = theView.getPreviousDisplayNumber();
            displayNumber = previousNumber+1;               
            theView.setDisplayNumber(displayNumber);
        }           
        catch(NumberFormatException ex){                
            System.out.println(ex);             
            theView.displayErrorMessage("You Need to Enter Integers");              
        }           
    }
}

问题答案:
public class SingleActionListener implements ActionListener {
    public void initializeButtons() {
        JButton[] buttons = new JButton[4];
        String[] buttonNames = new String[] {"button1", "button2", "button3", "button4"};

        for (int i = 0; i < 4; i++) {
            buttons[i] = new JButton(buttonNames[i]);
        }
    }

    public void addActionListenersToButtons() {
        for (int i = 0; i < 4; i++) {
            buttons[i].addActionListener(this);
        }
    }

    public void actionPerformedd(ActionEvent actionEvent) {
        if (actionEvent.getSource() == buttons[0]) {
            //Do required tasks.
        }

        if (actionEvent.getSource() == buttons[1]) {
            //Do required tasks.
        }

        if (actionEvent.getSource() == buttons[2]) {
            //Do required tasks.
        }

        if (actionEvent.getSource() == buttons[3]) {
            //Do required tasks.
        }
    }
}


 类似资料:
  • 问题内容: 我想在我的应用程序中创建一个工具栏。如果单击该工具栏上的按钮,它将弹出一个菜单,就像Eclipse的工具栏一样。我不知道如何在Swing中执行此操作。有谁可以帮助我吗?我尝试过Google,但一无所获。 问题答案: 在Swing中,这比需要做的难。因此,我没有为您提供教程,而是创建了一个完整的示例。

  • 问题内容: 例如,我有DBManager.java Singleton类,必须将其部署在集群环境中。这是一个基于Web的应用程序,具有以下部署策略 Apache负载平衡器-> Tomcat 6(群集中有3个服务器)。 我必须为3个tomcat实例维护一个DBManager实例。 我的代码是 我一直在寻找解决此问题的方法,并发现类似JGroups API的东西。可以使用JGroups实现吗?任何想法

  • 我在代理“客户”群体中用Anylogic创建了一个时间表,客户必须创建订单并将其发送到“终端”。每天,每个客户必须发送到终端的订单量都是不同的。我想一次创建多个订单(每天,即计划中的开始列),我想创建的金额是计划中的值列。如何做到这一点? 正如您在下面看到的,现在每天只创建一个订单(以金额为参数),但我想在那一天/那一刻创建这个订单量。谢谢您的帮助! 日程数据如下所示:

  • 我正在尝试学习java GUI,但我似乎注意到在尝试创建多个类似按钮时存在大量重复。例如在这段代码中: 有没有一种更短、更美观的方式来编写这段代码?

  • 我有多个java项目。这些项目正在使用Gradle创建jar、war和ear文件。在每个项目中,我都使用清单文件来维护元数据,如版本、日期-时间...为此,我在每个build.gradle文件中都包含了清单文件创建逻辑。 但在Gradle中有一个特性调用SharedManifest。我在主项目build.gradle脚本中定义了以下两个任务。但是在每个jar和war文件中都有gradle创建的默认

  • 所以我希望我的按钮被标记为1-9,但我不想列出每个按钮的所有操作侦听器和操作命令。我怎么做 而且我也不能使用add。ActionListener(这个)那么我可以使用什么 抱歉,我是java秋千的新手,所以它仍然有点混乱