2013-04-07 39 views
2

所以,我在我建立一个聊天的主界面窗口的JFrame。该窗口/ JFrame中有几个按钮,其每一个示出一个JDialog(我Netbeans中拖动一个JDialog到父(先前创建的?)的JFrame)。将未修饰的JDialog

我的问题是,这两个窗口都设置为undecorated = true,所以我希望让用户拖动和通过点击和拖动窗口的

一个部分(模拟标题栏时未未修饰的)移动随意所有窗口

在我已经通过下面的代码来完成这个一切jFrames只是initComponents()后:

final Point point = new Point(0,0);  // Why 'final' and not simply Point point?  
    addMouseListener(new MouseAdapter() { 
     public void mousePressed(MouseEvent e) { 
      if(!e.isMetaDown()){ 
       point.x = e.getX(); 
       point.y = e.getY(); 
       System.out.println("Ratón pulsado: " + point.x + "," + point.y); 
      } 
     } 
    }); 

    addMouseMotionListener(new MouseMotionAdapter() { 
     public void mouseDragged(MouseEvent e) { 
      if(!e.isMetaDown() && point.y <= 17){ //Coordinates of title bar, any X and up to 17px from the top border 
       Point p = getLocation(); 
       setLocation(p.x + e.getX() - point.x, p.y + e.getY() - point.y); 
       System.out.println("Ratón movido: " + (p.x + e.getX() - point.x) + "," + (p.y + e.getY() - point.y)); 
      } 
     } 
    }); 

不过,我不知道如何在的JDialog使用此代码。当我右键单击它在导航器,并选择自定义代码,那么我不能在那里,因为整个的JFrame停止工作粘贴。我是JFrames的jDialogs儿童的新东西,所以请帮助我一些指导:)谢谢

+3

搜索组件动,别忘了给予好评这个(这些)的答案(S) – mKorbel 2013-04-07 20:25:20

+0

的作者对于[示例](http://stackoverflow.com/a/7760896/230513)。 – trashgod 2013-04-07 20:55:47

回答

3

好吧,作为@mKorbel建议,我前往here,在那里我找到了一个很好的类叫ComponentMover,这帮助我做这个。我需要2个更多的声望,所以当我能够做到这一点时,我保存了链接以便回复和点赞。

我必须确保它完美的作品,准确地在我想要的方式,但看起来太棒了!谢谢!

+0

请发布一个工作示例,如果你有它。 – Buffalo 2014-02-24 09:35:48