我有一个程序,当单击一个按钮时,它会改变它的颜色。我有以下代码:
public void actionPerformed(ActionEvent e) {
MyButton btn = (MyButton)e.getSource();
int x = getNew();
if(x == 0) {
btn.setType(0);
btn.setColor(type0);
}
if(x == 1) {
btn.setType(1);
btn.setColor(type1);
}
if(x == 2) {
btn.setType(2);
btn.setColor(type2);
}
}
我想记录按钮和每次单击它时的新颜色,所以我考虑从 actionPerformed 和 setColor 公开参数。
每次从 actionPerformed 调用 setColor 时,我都会打印后者的参数。仅针对新颜色的切入点和建议:
public aspect Log {
pointcut change(Color c) : withincode(* actionPerformed(..)) && call(* *.setColor(..)) && args(c);
before(Color c) : change(c) {
System.out.println("Chnging the color to " + c.toString());
}
}
有用。但我也想参加活动(这样我就可以参加按钮及其旧颜色)。我怎么能做到这一点?它不适用于 args()。我应该为 actionPerformed() 写另一个切入点吗?