マウスの位置を報告するループを開始し、マウスがクリックされるまでループを開始したい。ループを開始して場所を報告するのに問題はありませんでしたが、マウスが2回クリックされるとMouseClickedメソッドがループを終了しますが、プログラムはループを無限に続行します。MouseListenerを使用して無限ループを開始または終了
public JFramethingy() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.addMouseListener(new MouseAdapter() {
int numClicked;
public void mouseClicked(MouseEvent arg0) {
numClicked++;
for (int i = 0; i > -1;) {
if(i % 1002000 == 0){
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int x = (int) b.getX();
int y = (int) b.getY();
System.out.println(x + "," + y);
}
if (numClicked > 1){
numClicked = 0;
i = -3;
}
i++;
}
}
});
マウスを最初にクリックしたときにmouseClicked()メソッドが呼び出されると、ループが無期限に繰り返され、返されません。それは、さらなるマウスクリックを含む他のイベントが決して処理されないことを意味し、したがってmouseClicked()は決して再び呼び出されません。 –