当鼠标拖动jframe标题栏移动时,我想实现那个拖动的方法,无奈找了半天找不到接口。想做一个例子,当鼠标拖动jframe标题栏移动时,弹个框出来请大侠们赐教。。

解决方案 »

  1.   

    import javax.swing.*;
    import java.awt.event.*;public class Test
    {
        public static void main(String[] args) 
        {
         final JFrame frame = new JFrame();
         frame.setSize(800, 600);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setVisible(true);
         Thread thread = new Thread(new Runnable() {
         public void run() {
         int x = frame.getX();
         int y = frame.getY();
         int nextX = x;
         int nextY = y;
         while (true) {
         nextX = frame.getX();
         nextY = frame.getY();
         if (x != nextX || y != nextY) {
         JOptionPane.showMessageDialog(frame, "你在拖动窗口!");
         }
         x = nextX;
         y = nextY;
         try {
         Thread.sleep(100);
         } catch (Exception ex) {
        
         }
         }
         }
         });
         thread.start();
        }
    }没别的办法了,凑合着用吧。
      

  2.   

    import java.awt.event.*;
    import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JDialog;public class MoveEventOccur{
        public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable(){
            @Override public void run(){
                final JFrame frame = new JFrame("Mmmm");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setPreferredSize(new Dimension(400,300));
                frame.setLocationRelativeTo(null);
                final JOptionPane optionPane = new JOptionPane("you've move the frame");
                final JDialog messageDialog = optionPane.createDialog(frame,"Message");
                messageDialog.setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
                messageDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                
                frame.addComponentListener(new ComponentAdapter(){                @Override public void componentMoved(ComponentEvent e){
                    if(messageDialog.isShowing()) return; //否则弹出许多对话框
                    messageDialog.setVisible(true);
                    }
                });            frame.pack();
                frame.setVisible(true);
            }
            });
        }
    }