addButtonがブール値(クリックされた場合はtrue、クリックされていない場合はfalse)を返すようにすることで回避策を作成し、次のようにしました。if (addButton)
{
doSomething();
}
(申し訳ありませんが、タイトルは誤解を招く可能性があります。より良いタイトルを作ることができませんでした)
カスタムボタンを追加するこのメソッド(method1と呼びましょう。ループ内でも常に呼び出されます)を取得しました。そのボタンをクリックすると、指定されたメソッド(method2と呼びます)を1回だけ実行します。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が常に呼び出され、その理由を理解していることですが、回避策はありますか?