2013-04-07 47 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