【发布时间】:2012-03-26 20:24:55
【问题描述】:
是否可以模拟单击按钮,类似于 doClick() 但只是图形模拟它,不生成任何 ActionEvent 。如果知道我可以扩展该类,请使用简单的 if 语句执行我自己的 doClick。但还有其他可能吗?
我想这样做是因为我有一个用户可以按下的按钮,但有时计算机(它在游戏中)会“按下”该按钮。所有逻辑都在另一个线程中完成,我只想为用户显示它。
【问题讨论】:
是否可以模拟单击按钮,类似于 doClick() 但只是图形模拟它,不生成任何 ActionEvent 。如果知道我可以扩展该类,请使用简单的 if 语句执行我自己的 doClick。但还有其他可能吗?
我想这样做是因为我有一个用户可以按下的按钮,但有时计算机(它在游戏中)会“按下”该按钮。所有逻辑都在另一个线程中完成,我只想为用户显示它。
【问题讨论】:
如果您深入了解您正在使用的外观和感觉的细节,您可能会看到它如何检测并绘制处于“向下”状态的按钮,然后进行模拟?
或者您可以扩展/实现 ButtonModel,并弄乱 setPressed/isPressed 状态?
【讨论】:
我认为最简单的解决方案是检查
ActionListener中的模型。
我看不出区分两者的方法;该模型不知道谁调用了它的方法。相反,您可以保存所有侦听器,调用doClick(),然后恢复侦听器。看起来您必须检查操作、更改和项目侦听器。
【讨论】:
如果你想点击按钮试试这个:
try
{
robot = new Robot();
robot.mouseMove(0,500);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}catch(Exception e){}
但也许您更愿意在用户不应该点击时简单地禁用按钮
Button.setEnabled(false);
【讨论】:
你可以设置是否启用,所以使用“buttonName.setEnabled(false);”
【讨论】: