私は徒競走を追跡するためのプログラムに取り組んでいます。このプログラムは、いつでも右クリック (これは変更される可能性があります) でランナーがフィニッシュ ラインを通過したことを示すように設定されています。これは、何かを実行し、ランナーをいつでも通過としてマークできるようにするために重要です。レースを終了して結果をまとめるには、ボタンがあります。誤クリックでタイマーが途中で停止するのを防ぐために、タイマーがまだ実行されている間に確認するダイアログがあります。このダイアログを右クリックして、ランナーを通過としてマークすることもできます。ダイアログからの入力をブール値として取得するメソッドがあります。
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 を取得する方法、または非モーダル ダイアログを入力まで待機させる方法はありますか?
アドバイスをいただきありがとうございます。