我正在开发一个旨在跟踪赛跑的程序。该程序设置为在任何时候右键单击(尽管这可能会更改)将指示跑步者已经通过了终点线。这很重要,这样您就可以在任何时候做事并仍然将跑步者标记为通过。要完成比赛并编译结果,有一个按钮。为了防止误点击过早停止计时器,我有一个对话框在计时器仍在运行时进行确认。此对话框也可以右键单击以将跑步者标记为通过。我有一个方法可以从对话框中获取输入作为布尔值。
public static boolean showDialog(Frame parent, boolean modal,String text,RacePanel r)
{
ConfirmBox c=new ConfirmBox(parent,modal,text);//this makes the dialog
for(Component comp:c.getComponents())//this adds a listener for right-click events, to record passing runners
r.addListener(comp);
c.setVisible(true);
return c.yes;//yes is the boolean that should be returned
}
我最初有对话框模式,因此该setVisible
方法将等待对话框关闭。但是,这使程序忽略了屏幕其余部分上的鼠标点击。当我将其设置为非模态时,此 showDialog 方法立即返回,始终为 false。我实际上并不关心对话框是否是模态的。
有没有办法通过模态对话框获取 MouseEvents 或使非模态对话框等到输入?
预先感谢您的建议。