Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何识别不同位置上的鼠标点击_Java_User Interface_Mouseevent - Fatal编程技术网

Java-如何识别不同位置上的鼠标点击

Java-如何识别不同位置上的鼠标点击,java,user-interface,mouseevent,Java,User Interface,Mouseevent,我正在创建一个绘图应用程序,用户单击一个按钮来选择要绘制的形状(例如节点),然后将该形状放置在单击鼠标的位置。 我希望用户能够点击屏幕上的两个不同的“形状”来创建它们之间的链接。 我创建的每个节点都会添加到节点的数组列表中。我有一个for循环来迭代节点,并且我在类节点中创建了一个包含以下内容的函数: boolean contains(Point point) { if((point.x >= centerX-radius) && (point.x <= cen

我正在创建一个绘图应用程序,用户单击一个按钮来选择要绘制的形状(例如节点),然后将该形状放置在单击鼠标的位置。 我希望用户能够点击屏幕上的两个不同的“形状”来创建它们之间的链接。 我创建的每个节点都会添加到节点的
数组列表中。
我有一个
for循环
来迭代节点,并且我在类节点中创建了一个包含以下内容的函数:

boolean contains(Point point) {
    if((point.x >= centerX-radius) && (point.x <= centerX+radius) && 
            (point.y <= centerY+radius) && (point.y>=centerY-radius))
        return true;
    else 
        return false;
}
boolean包含(点){

如果((point.x>=centerX radius)&&(point.x我认为您需要保留一个附加变量,以了解单击是第一次还是第二次..在这种情况下,通过第一次单击保持节点处于选中状态可能会很有用

因此,在伪代码中:

Node selected;

onClick() {
    Node clicked = findNode();

    if (clicked == null || clicked == selected) {
        selected = null;
    } else
    if (selected == null) {
        selected = clicked;
    } else {
        createLine(selected, clicked);
        selected = null; 
    }
}

要获取鼠标坐标,可以在onmouseClicked(MouseEvent me)函数中使用getX()和getY()函数。

您不能使用jquery或javascript吗?因为在这两个函数中,您都可以使用onblur event创建形状派生对象,如矩形2D、多边形或路径2D,然后您可以使用它们的
。包含(点p)
methods。要获得更好的帮助,请发布完整的。如果您只有两个形状,可以参考此链接,这可能会帮助您获得更多形状,然后您需要为每个键编写逻辑,即使这很笨拙