将函数名称传递给函数

时间:2020-03-03 02:50:00

标签: java

希望我把这个问题说对了。因此,我正在开发一个具有UI并利用按钮的程序。我需要通过按钮完成几件事。按下按钮时,这些将由函数处理

按钮示例:

private void columnOneButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
    buttonDisable(0);
}                                               

private void columnTwoButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                
    buttonDisable(1);
} 

函数:

private void buttonDisable(Integer index){
    // deleted code where the index does stuff, that works fine and didn't want to show it

    this.columnOneButton.setEnabled(false);

}

很明显,这仅适用于columnOneButton,因此要修复它,我使用了像这样的索引:

private void buttonDisable(Integer index){
// deleted code where the index does stuff, that works fine and didn't want to show it

        if(index == 0){
        this.columnOneButton.setEnabled(false);
        } else if(index == 1){
        this.columnTwoButton.setEnabled(false);
        } // .... there are more than two buttons
}

虽然这可以完成工作,但是这是错误的,我想通过传入第二个参数来达到相同的目的,我在想这样的事情:

private void buttonDisable(Integer index, String buttonName){
// deleted code where the index does stuff, that works fine and didn't want to show it

this.buttonName.setEnabled(false);

}

这显然行不通,但我希望这样做,却不知道该怎么办。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用它:

public void actionPerformed(ActionEvent e) {
    buttonDisable(1, (JButton) e.getSource());
}

private void buttonDisable(Integer index, JButton button){
    button.setEnabled(false);
}
相关问题