2012-12-21 58 views
0

我有我的程序未修改,因此我仍然想要移動程序沒有標題欄。下面的代碼對我來說確實有效,但它像延遲或跳過。它工作正常,第二跳,工作正常,跳過...等等等等。目前,我有我的if語句在鼠標移除。有沒有更好的方法來實現mousedragged來移動我的窗口/框架/程序?mousedragged滯後/移動窗口/框架/程序時跳過

addMouseMotionListener(new MouseMotionListener() {     

      @Override 
      public void mouseDragged(final MouseEvent e) { 
       // TODO Auto-generated method stub 
       Runnable runnable = new Runnable() { 
        public void run() { 
         int posX=0; 
         int posY=0; 
         int posx=e.getLocationOnScreen().x; 
         int posy=e.getLocationOnScreen().y; 
         setLocation (posx - posX, posy - posY); 
        }}; 
        SwingUtilities.invokeLater(runnable);          
       } 


       public void mouseMoved(MouseEvent e) { 
        // TODO Auto-generated method stub 
        if (SettingsIni.jmenuauto().equals("on")){ 
         getJMenuBar().setVisible(e.getY() < 50); 
        } 
       }   

      }); 

回答

1

試用沒有invokeLater()

此外,我認爲posX/Y應該是該類的字段,並設置在mousePressed()而不是。當他們站在這裏,他們是沒有用的...

+0

我已經試過它沒有以後調用,它不是更好。我在推薦它的另一篇文章中找到了invokelater。 – user1753429

+0

您是否嘗試了我的其他建議,關於在mousePressed中設置posX?另外,你使用的是什麼版本的Java?你在什麼平臺上測試這個? – PhiLho

+0

所以問題在於我運行的表代碼。我最近做了一個新程序,使用了你提到的代碼調整,並且沒有滯後。我有一個計時器,在程序中更新,這給我帶來麻煩。然後,我的表每秒鐘都會更新30次,每次更新都使用ini4j從ini文件中提取信息,這也正好位於網絡上。所以你的代碼不會救救我,我還有其他問題...... :(謝謝你的幫助!至少它在我的新程序中起作用。 – user1753429