Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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_Jframe_Jpanel_Coordinates - Fatal编程技术网

Java 获取面板的坐标

Java 获取面板的坐标,java,jframe,jpanel,coordinates,Java,Jframe,Jpanel,Coordinates,使用mouseevents,我可以获得框架的x和y坐标,但我无法获得面板的x和y坐标。下面的代码是我得到的x和y坐标的框架 public void mouseMoved(MouseEvent e) { x = e.getX(); y = e.getY(); text = Integer.toString(x) +","+Integer.toString(y); Frame.frame.repaint(); } 下面的代码是我试图获得面板的x和y坐标,但它画出

使用mouseevents,我可以获得框架的x和y坐标,但我无法获得面板的x和y坐标。下面的代码是我得到的x和y坐标的框架

public void mouseMoved(MouseEvent e) {
    x = e.getX();
    y = e.getY();
    text = Integer.toString(x) +","+Integer.toString(y);

    Frame.frame.repaint();

}
下面的代码是我试图获得面板的x和y坐标,但它画出了0。Paint.Paint是我的jpanel的名字。我不知道我做错了什么。如果可以的话,请帮忙

public void mouseMoved(MouseEvent e) {
    x = Paint.paint.getX();
    y = Paint.paint.getY();
    text = Integer.toString(x) +","+Integer.toString(y);

    Frame.frame.repaint();

}

如果我理解正确,您的MouseListener已在JFrame中注册,您希望获得相对于JFrame中包含的JPanel的x/y。MouseEvent中的x和y表示MouseListener在其中注册的组件。如果在父容器上注册了MouseListener,并且要获取MouseEvent相对于子组件的坐标,可以使用SwingUtilities转换坐标

public void mousePressed(MouseEvent e){
    Point childCoordinate = SwingUtilities.convertPoint(parent, e.getPoint(), child);
}

或者我可以把鼠标听器加到面板上,对吗?我做到了,而且成功了。但我还有一个问题。我在框架和面板上都添加了鼠标侦听器,但现在它为面板设置了坐标。这并不是说我有问题,但我只是搞不清楚为什么它会在面板上设置它,当我在jframe和jpanel上都添加鼠标侦听器时。我不知道你所说的“设置坐标”是什么意思。如果两个侦听器都设置了同一个变量的值,则最后通知的那个将是最终值。因此,如果我执行frame.addMouseListener(事件)和put panel.addMouseListener(事件),它将侦听面板,因为panel是最后一个。可以我懂了。。。