2013-04-07 1 views
2

Итак, у меня есть jFrame, в котором я создаю основное окно интерфейса чата. В этом окне/jFrame есть несколько кнопок, каждый из которых показывает jDialog (который я создал ранее в Netbeans, перетаскивая jDialog в родительский (?) JFrame).Drag undecorated 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 перестает работать. Я новичок в этом деле jDialogs детей из jFrames, поэтому, пожалуйста, помогите мне с некоторыми рекомендациями :) Спасибо

+3

найти компонентный движок, не забудьте подтвердить этот ответ (-ы) – mKorbel

+0

Для [пример] (http://stackoverflow.com/a/7760896/230513). – trashgod

ответ

3

Ну, как предложил @mKorbel, я направился в here, где нашел хороший класс под названием ComponentMover, который помог мне сделай это. Мне понадобится еще 2 репутации, поэтому я сохранил ссылку, чтобы вернуться и вернуться, когда смогу это сделать.

Я должен обеспечить, чтобы он работал идеально и точно так, как я хочу, но отлично смотрится! Благодаря!

+0

, пожалуйста, напишите рабочий пример, если он у вас есть. – Buffalo