我正在挑战(也需要)制作我自己的窗户,以便我可以自定义它甚至超过挥杆的能力。
到目前为止,一切都很顺利,除了调整大小外,我可以做普通Windows窗口可以做的所有事情。我想首先使用MouseMotionListener检测鼠标何时接近边缘并捕获MouseMoved事件。它按计划工作除外。这是一个代码示例:
public class foo extends MouseAdapter
{
private JFrame frame
private Point p;
public foo(JFrame bar)
{
frame = bar;
}
@Override
public void MouseMoved(MouseEvent e)
{
apoint = e.getPoint();
System.out.println(apoint.toString());
}
}
....其他地方
public class zoof extends JFrame
{
public zoof()
{
setSize(500,500);
setUndecorated(true);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel.setSize(500, 100);
JPanel cpanel = new JPanel();
panel.addMouseListener(new x(this));
panel.addMouseMotionListener(new x(this));
Xbutton c = new Xbutton();
Ebutton e = new Ebutton();
HButton m = new Hbutton();
addMouseMotionListener(new foo(this));
panel.add(sh);
panel.add(ex);
panel.add(close);
add(panel, BorderLayout.NORTH);
add(cpanel, BorderLayout.CENTER);
}
}
除非鼠标位于面板顶部(带按钮的面板),否则输出效果非常好。我有两个假设,说明为什么这可能不起作用
无论是哪种情况,它都是我喜欢你们输入的东西。非常感谢!
答案 0 :(得分:2)
首先,你的解决方案不是正确的方法恕我直言。如果起点(鼠标按下)位于边界区域,我不会关心运动事件,仅适用于鼠标拖动事件。
现在,对于你的问题,是什么让你的听众不对这些事件做出反应;如果没有你的假设是正确的,那么如果找到了听力的孩子,那么事件就不会被发送给父母。尝试删除面板的监听器,框架应该接收事件。查看this post了解如何转发事件的信息。