我可以在Java中的actionPerformed方法中使用switch - case

Fre*_*red 1 java events action

我想检查发生了哪个actionEvent ActionEvent ee.getSource().我可以使用开关盒吗?

public void actionPerformed(ActionEvent e){
    switch(e.getSource()){
        case radius:
            double r = validate(radius.getText());
            break;
        case height:
            double h = validate(height.getText());
            break;
        case out:
            out.setText(String.valueOf(h*r));
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Wou*_*rts 8

不,你不能.您可以在switch语句中使用的类型非常有限.请参阅switch语句.

你当然可以把它写成一系列"if"和"else if"语句.


Joa*_*uer 6

是的,你可以使用开关actionPerformed.

不,你不能像你在这里展示的那样使用它.

switch仅支持原始类型和enums(并且String仅在Java 7及更高版本中支持).

另一个问题是case-values值必须是编译时常量.

你需要这样的代码:

public void actionPerformed(ActionEvent e){
    if (e.getSource() == radius) {
        double r = validate(radius.getText());
    else if (e.getSource() == height) {
        double h = validate(height.getText());
    else if (e.getSource() == out) {
        out.setText(String.valueOf(h*r));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您也可以打开枚举. (4认同)