通过使 addButton 返回一个布尔值(单击时为真,未单击时为假)来解决方法,然后我这样做了:if (addButton)
{
doSomething();
}
(抱歉,标题可能会产生误导。无法编造更好的标题)
我得到了这个方法(我们称之为method1,它在循环中也一直被调用),它添加了一个自定义按钮,我希望那个按钮(当点击时)只运行一次指定的方法(让我们称之为method2)。我希望在几个不同的类中使用 method1,但要触发不同的操作。
public void addButton(Graphics2D g2d, int x, int y, AttributedCharacterIterator atstr, Method method)
{
BufferedImage img = Sprites.button;
x -=img.getWidth()/2;
y -=img.getHeight()/2;
int border = 10;
g2d.drawImage(img, null, x, y);
g2d.drawString(atstr, x + (img.getWidth()/2) - border, y + (img.getHeight()/2) + 10);
Rectangle getBounds = new Rectangle(x, y, img.getWidth(), img.getHeight());
if (MouseInput.getBounds().intersects(getBounds) && MouseInput.mouseClickedPressed == true)
{
try {
method.invoke(this);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
它是这样调用的:
addButton(g2d, 200, 200, Template.atstr(g2d, "Siege!", Color.BLACK, "Times New Roman", 20, doSomething()));
public Method doSomething()
{
//Action.....
return null;
}
我的问题是method2一直被调用,我已经知道为什么了,但是有什么办法吗?