不过我以前在学习GUI那块知识的时候,我好象看到书中有过这样的例子,就是关于鼠标拖拽的!
具体忘了!嘿嘿!不过这样的例子网上应该很多!还有关于手机开发的书当中肯定也有介绍的!多去找找资料吧!楼住好运!

解决方案 »

  1.   

    MouseListener,MouseMotionListenermouseEntered
    mouseExited
    mouseMoved
    mouseDragged
    mousePressed
    mouseReleased以前做过控件的拖动,例如把一个JPanel在界面里到处拖,基本思路如下:
    mouseEntered//这里面切换光标,换成一个张开的手
    mouseExited//切换光标,换成正常鼠标
    mousePressed//切换光标,换成抓的样子
    mouseReleased//切换光标,换成一个张开的手
    mouseDragged//拖动控件,刷新。这里有个问题,因为拖动的问题,所以界面有闪烁,虽然swing默认了二级缓存BufferedImage,不过还是有点不好看,当然跟我拖的是个控件可能也有关系,内容比较多,后来这块功能放弃了,就没仔细研究来优化。楼主看看对你有帮助吗?
      

  2.   

    觉得Image的拖动应该差不多,实在不行就把Image先放进个容器里然后拖那个容器好了,呵呵
      

  3.   

    这个我也没写过,不过我讲一下,我的建议.
      windows里面有光标的定义,HAND_CURSOR就表示一只手的形状.在JAVA中可以用下面的方法设定:setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    另外要实现所有的图形都移动,应该通过改变坐标轴的坐标可以达到吧
      

  4.   

    一个简单的例子import java.awt.*;
    import java.awt.event.MouseEvent;import javax.swing.*;
    import javax.swing.event.MouseInputAdapter;public class DragablePanel extends JPanel {    public DragablePanel() {
            MouseHandler mouseHandler = new MouseHandler();
            addMouseListener(mouseHandler);
            addMouseMotionListener(mouseHandler);
        }    private class MouseHandler extends MouseInputAdapter {        private int anchorX, anchorY;        public void mousePressed(MouseEvent e) {
                anchorX = e.getX();
                anchorY = e.getY();
                setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
            }        public void mouseReleased(MouseEvent e) {
                setCursor(Cursor.getDefaultCursor());
            }        public void mouseDragged(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();            Container parent = getParent();
                if (parent instanceof JViewport) {
                    JViewport viewport = (JViewport) parent;                Point p = viewport.getViewPosition();
                    p.translate(anchorX - x, anchorY - y);
                    p.x = Math.max(p.x, 0);
                    p.y = Math.max(p.y, 0);
                    p.x = Math.min(p.x, getWidth() - viewport.getWidth());
                    p.y = Math.min(p.y, getHeight() - viewport.getHeight());                viewport.setViewPosition(p);
                }
            }
        }
        
        public static void main(String[] args) {
            DragablePanel p = new DragablePanel();
            p.setPreferredSize(new Dimension(800, 600));
            p.setLayout(new FlowLayout(FlowLayout.LEFT, 200, 200));
            p.add(new JLabel("test"));
            JScrollPane sp = new JScrollPane(p);
            JFrame f = new JFrame();
            f.getContentPane().add(sp, BorderLayout.CENTER);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(400, 400);
            f.setLocationRelativeTo(null);
            f.show();
        }
    }
      

  5.   

    将图形画在一个自己的JPanel上,JPanel的PreferSize为图形的最大尺寸,然后将这个JPanel放在JScrollPane里,鼠标拖动时调用JScrollPane的设置viewport位置的方法就行了。
      

  6.   

    建议不要使用swt做图形编辑器.....