如何在此事件处理程序中避免重复代码?

时间:2015-08-15 04:22:24

标签: java javafx javafx-8 fxml

我有一个类商店。

有多家商店,最终有数百家。

我有多个按钮使用一个事件处理程序,因为它们都是相同的,但具有不同的数字,具体取决于商店。

我让事件处理程序检测哪个按钮触发了事件。

变量store然后根据按下的按钮存储商店对象

但检测按下哪个按钮的代码似乎非常重复。

过去情况更糟,我把它缩短了很多:

@FXML
private void handleButtonAction(ActionEvent event) {
    Object source = event.getSource();
    if (source.equals(store01Button)){
        store = store01;
    }else if (source.equals(store02Button)){
        store = store02;
    }else if (source.equals(store03Button)){
        store = store03;
    }else if (source.equals(store04Button)){
        store = store04;
    }else if (source.equals(store05Button)){
        store = store05;
    }else if (source.equals(store05Button)){
        store = store05;
    }

当我有数百家商店时,我正在寻找如何解决这个问题的答案。

1 个答案:

答案 0 :(得分:0)

创建按钮时,使用setUserData保存对商店的引用。在事件处理程序中,使用getUserData来获取它。每个java fx组件都维护一个属性映射。