Frame中使用的是GridLayout,点击一个按钮,就会摊出来一个菜单,我用mouselistener实现,可是  
me.getx(),me.gety()时,弹出菜单跑到左上角去了,为什么不是鼠标点击的位置?那要如何实现?  
我用过绝对定位(300,100)就可以,但这样不好,我还是想用灵活点的方法,请赐教

解决方案 »

  1.   

    还有jButton1.getLocationOnScreen().x
      

  2.   

    MouseEventListener的参数MouseEvent e,e.getX(),e.getY()
      

  3.   

    楼上几位的意见,都不对啊,获得的始终是Button的位置,而Button不在左上角
    Button在右下角,得到的坐标也会跑到左上角去,我要的是相对位置
      

  4.   

    MouseEvent.getPoint() 返回事件相对于源组件的 x、y 位置。
    -----------------------------
    给JFrame添加事件:
    addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    formMouseClicked(evt);
                }
            });jframe事件处理:
    private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
    // TODO 将在此处添加您的处理代码:
            int x = evt.getPoint().x;
            int y = evt.getPoint().y;
            jLabel1.setText(" " + x + "  " + y);
            
            Graphics g = this.getGraphics();
            g.drawRect(x,y,20,20);
        }
      

  5.   

    如果是给按钮添加监听器,得到的Point是按钮内部的点,可能要进行坐标转换,画到jframe里,要不然,按钮的小空间里边画不下。再不行,就要等高手出现了。
      

  6.   

    大侠!请息怒!我刚才是在网吧上网。所以没有调试的嘛!再说他这个还不是自己的一些想法。要是真的能行的话。会对编辑GUI有很大作用啥!难道你搞了的行了嘛!