我'我在java中编写了一个扩展JPanel用于国际象棋游戏的类。它的主要目标是使用函数getXY为另一个类赋予一个点。调用getXY方法时,它会启动一个新的Thread,然后调用wait()。另一个线程向面板添加一个鼠标监听器,当用户单击面板时,它会计算坐标和notify()面板,但它会产生一个错误。
这是班级:
int spacesX;
int spacesY;
int panelWidth;
int panelHeigth;
private int x;
private int y;
public PannelloInputGriglia(int x, int y,int heigth,ChessModel model)
{
this.setBounds(x, y, (heigth/model.getHeight()*model.getWidth()), heigth);
spacesX = model.getWidth();
spacesY = model.getHeight();
panelWidth = this.getWidth();
panelHeigth = this.getHeight();
}
public void setX(int x)
{
this.x = x;
}
public void setY(int y)
{
this.y = y;
}
public Point getXY()
{
InputThread th = new InputThread(this);
try {
this.wait();
} catch (InterruptedException ex) {
Logger.getLogger(PannelloInputGriglia.class.getName()).log(Level.SEVERE, null, ex);
}
return new Point(x, y);
}
private class InputThread extends Thread
{
PannelloInputGriglia pannello;
public InputThread(PannelloInputGriglia p)
{
pannello = p;
start();
}
@Override
public void run() {
pannello.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int sectorsX = panelWidth/spacesX;
int sectorsY = panelHeigth/spacesY;
setX(e.getX() / sectorsX);
setY(e.getY() / sectorsY);
super.mouseClicked(e);
pannello.notify();
}
});
}
}
我该怎么办?
答案 0 :(得分:0)
您的代码中没有调用getXY()。
但是根据您发布的代码,我认为您应该: