【发布时间】:2013-04-08 01:52:00
【问题描述】:
在您阅读本文之前,我只想说,现在任何帮助都会对我有很大帮助。我很绝望。我花了至少一个星期的时间试图在 Eclipse 中完成这项工作,我想我遗漏了一些明显的东西,我真的需要你的帮助。
现在,我的鼠标侦听器包含每个“房间”的 if 语句和这些 if 语句中的双 for 循环,告诉 JFrame 是否在 JFrame 的某个区域内单击鼠标以重新绘制相应的“房间” '。
现在假设 #4 房间可以通向 #5 或 #6。从 #4 > #6 开始没有问题。现在从 #5 > #4 开始出现问题。出于某种原因,房间 #4 的事件区域显示在 #5 中(它不应该出现)所以现在我可以在单击以前的事件区域时转到 #4 或 #6。
我已经为其他“房间”尝试过这个问题,但问题并没有出现在其中。我得出的结论是,它可能需要在与多个路径相连的房间之间来回走动。我附加了一个可视化路径和隔离代码以使事情变得更容易(数字只是房间#)。
MouseAdapter mouseHandler = new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
//System.out.println(e.getPoint());
if(n==6)//R6
{
for(int i = 116;i<132;i++)//3a
{
if(e.getX() == i)
{
for(int j = 388;j<404;j++)
{
if(e.getY() == j)
{
n = 7;//3b
return;
}
}
}
}
for(int i = 116;i<132;i++)//2b
{
if(e.getX() == i)
{
for(int j = 308;j<324;j++)
{
if(e.getY() == j)
{
n = 4;//2a
return;
}
}
}
}
for(int i = 580;i<596;i++)//8a
{
if(e.getX() == i)
{
for(int j = 372;j<388;j++)
{
if(e.getY() == j)
{
n = 2;//8b
return;
}
}
}
}
}
if(n==5)//R5
{
for(int i = 220;i<268;i++)//1b
{
if(e.getX() == i)
{
for(int j = 437;j<485;j++)
{
if(e.getY() == j)
{
n = 4;//1a
return;
}
}
}
}
}
if(n==4)//R4
{
for(int i = 179;i<244;i++)//2a
{
if(e.getX() == i)
{
for(int j = 403;j<468;j++)
{
if(e.getY() == j)
{
n = 6;//2b
return;
}
}
}
}
for(int i = 436;i<500;i++)//1a
{
if(e.getX() == i)
{
for(int j = 403;j<468;j++)
{
if(e.getY() == j)
{
n = 5;//1b
return;
}
}
}
}
for(int i = 274;i<406;i++)//A2
{
if(e.getX() == i)
{
for(int j = 193;j<276;j++)
{
if(e.getY() == j)
{
n = 0;//A1
return;
}
}
}
}
}
if(n==0)//R0
{
for(int i = 459;i<493;i++)//A1
{
if(e.getX() == i)
{
for(int j = 110;j<133;j++)
{
if(e.getY() == j)
{
n = 4;//A2
return;
}
}
}
}
}
repaint();
//http://stackoverflow.com/questions/5654208/making-a-jbutton-invisible-but-clickable
}
public void mouseMoved(MouseEvent e)
{
// = e.getPoint();
//repaint();
}
};
addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
【问题讨论】:
-
您的代码中有错误。由于您没有显示任何代码,因此我们如何为您提供帮助超出了我的范围。我知道我们很聪明,但没那么聪明。
-
等一下,我会快速添加代码。编辑:好的,我已经添加了,如果你能看到我做错了什么,这将对我有很大帮助。
-
在发布代码之前,您应该进行一些认真的调试。我会使用调试器或
println(...)语句来显示程序变量的状态,以试图找出为什么事情不正常。否则,您可能会发布与您的问题无关的代码。 -
我已经手动隔离了问题,我 98% 确定问题出在鼠标侦听器上,因为这是图像之间的所有连接所依赖的地方。
标签: java eclipse swing if-statement mouseevent