我想检查发生了什么actionevent ActionEvent e
以及 e.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;
}
}
4条答案
按热度按时间6ju8rftf1#
不,你不能。switch语句中可以使用的类型非常有限。请参阅switch语句。
当然,你可以把它写成一系列“if”和“elseif”语句。
6vl6ewon2#
正如其他解决方案所指出的,在这种情况下不能使用switch。然而,与其实现一个
ActionListener
包含一个大的if-then块,为什么不单独实现呢ActionListeners
对于每个事件源?这是一种更加基于oo的方法。通常是你的
ActionListener
无论如何,实现都是(小的)匿名内部类,因此您不必处理大量的.java文件。cl25kdpy3#
这个
ActionEvent
包含ActionCommand
是字符串的字段。如果在创建Button
它默认为按钮的文本。你可以用它来代替。比如:
ki1q1bka4#
是的,你可以用开关
actionPerformed
.不,你不能像这里展示的那样使用它。
switch
仅支持基元类型和enum
s(和String
,但仅限于Java7和更高版本)。另一个问题是case值必须是编译时常量。
您需要这样的代码: