2013-04-07 4 views
2

Donc, j'ai un jFrame dans lequel je construis la fenêtre d'interface principale d'un chat. Cette fenêtre/jFrame a plusieurs boutons, dont chacun montre un jDialog (que j'ai créé précédemment dans Netbeans en faisant glisser un jDialog sur le parent (?) JFrame).Drag non décoré jDialog

Mon problème est que les deux fenêtres sont mis à undecorated = true et je souhaite laisser le utilisateur de faire glisser et déplacer toutes les fenêtres à volonté en cliquant et en faisant glisser une partie des fenêtres (qui émulent la barre de titre lorsqu'ils ne sont pas undecorated)

dans tous les JFrames j'ai accompli ce par le code suivant juste après 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)); 
      } 
     } 
    }); 

Cependant, je ne sais pas comment utiliser ce code dans le JDialog. Lorsque je clique avec le bouton droit dans le navigateur et que je sélectionne Personnaliser le code, je ne peux pas le coller car le jFrame entier ne fonctionne plus. Je suis nouveau dans cette affaire des enfants de jDialogs JFrames, donc s'il vous plaît aidez-moi quelques lignes directrices :) Merci

+3

recherche de composant mover, ne pas oublier d'upvote auteur de cette (ces) réponse (s) – mKorbel

+0

Pour [exemple] (http://stackoverflow.com/a/7760896/230513). – trashgod

Répondre

3

Eh bien, comme @mKorbel a suggéré, je me dirigeais vers here où j'ai trouvé une classe niçoises ComponentMover qui m'a aidé à fais ceci. Je vais avoir besoin de 2 autres réputation donc j'ai sauvé le lien pour revenir en arrière et upvote quand je suis capable de le faire.

Je vais devoir m'assurer que ça fonctionne parfaitement et exactement comme je le veux, mais c'est génial! Merci!

+0

s'il vous plaît poster un exemple de travail si vous l'avez. – Buffalo