想实现用鼠标能拖拽List中的内容,就是当用鼠标点击list中的Item能够把它上下拖拽到鼠标所在的位置,请问有什么方法么?

解决方案 »

  1.   

    啊! 你不知道我不熟悉 GUI吗? 呼呼, 其他人继续。
      

  2.   

    55555,老大帮我推荐个熟悉GUI的
      

  3.   

    使用鼠标拖曳的方式来实现比较难
    可以用eclipse中Properties->Java Build Path->Order and Export添加两个按钮一样的方式
    或者在list上用个JPopupMenu来操作
      

  4.   

    import java.awt.BorderLayout;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;public class Test {
    public static void main(String[] args) {
    ListFrame f = new ListFrame();
    f.setSize(600, 400);
    f.setTitle("Test");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }class ListFrame extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private int first;
    private int sec;

    public ListFrame() {
    JPanel panel = new JPanel();
    this.getContentPane().add(panel, BorderLayout.CENTER); final DefaultListModel  m = new DefaultListModel ();
    m.addElement("A");
    m.addElement("B");
    m.addElement("C");
    final JList list = new JList(m); list.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub
    } public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    first = list.locationToIndex(e.getPoint());
    } public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub
    sec = list.locationToIndex(e.getPoint());
    if ( sec != -1) {
    if ( first != sec ) {
    String s1 = m.getElementAt(first).toString();
    String s2 = m.getElementAt(sec).toString();
    m.setElementAt(s1, sec);
    m.setElementAt(s2, first);

    list.clearSelection();
    }
    }
    }
    });
    panel.add(list);
    }
    }
    给你个思路
      

  5.   

    唉,查了下JList的源码,里面赫然有个setDragEnabled,显示就是能够支持鼠标拖曳的
    然后又查了它的文档,JList、JTree等等swing组件都早就已经支持drag
    楼主这个完全可以实现,都不用自己写多少代码
    先自己去查吧,查不着我再给你源码