为什么要执行几次ActionPerformed?

时间:2019-06-16 11:15:18

标签: java enums combobox jbutton

我有一个小问题,我敢肯定这是一个愚蠢的错误,但是我去了。

我有一个GUI,其中除其他对象外还包含JComboBox和JButton。 ComboBox(在我的代码中称为orderTypeChoices)包含名为“ OrderType”的“枚举”中的对象名称。 这是我的列举:

public enum OrderType {
BUILD_SCREENING_CENTER,
INCREASE_TAXES,
RESEARCH_MEDICINE,
RESEARCH_VACCINE

}

在我的代码中,有一个称为executeOrder的方法,该方法根据OrderType执行其他代码。我非常确定错误不在这里。 上下文是我需要在JComboBox中检查选择了哪个项目,因此当我单击按钮时,executeOrder将使用选择的项目。

ActionListener actionListener = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String orderName = (String) cloudPandemic.orderTypeChoices.getSelectedItem();
            for (OrderType orderType : OrderType.values()) {
                if (orderType.name().equals(orderName)) {
                    System.out.println(orderType.name());
                    cloudPandemic.executeButton.addActionListener(e1 -> cloudPandemic.simulation.executeOrder(OrderType.valueOf(orderName)));
                    break;
                }
            }
        }
    };
    this.cloudPandemic.orderTypeChoices.addActionListener(actionListener);

因此,我添加了2个ActionListeners(一个添加到ComboBox,另一个添加到Button)。我将String的项目名称存储在String中,并检查枚举中的对象之一是否与namewise匹配。如果是这样,我向按钮添加一个ActionListener,在其中使用executeExecute方法。但是,我注意到它趋于累积:如果我选择第一个项目,它将起作用,如果我选择另一个项目,它将在该项目和我选择的第一个项目上执行,依此类推。

我想知道我是否错过了什么,因为我不知道为什么ActionPerformed执行过去的Actions。

预先感谢, 票价。

0 个答案:

没有答案
相关问题