可以在中间加个 label 
给label加个监听鼠标事件。
鼠标按下去的时候就可以移动label.鼠标轻开的时候,轻开的位置就是label的位置。
根据label的位置,再改动tree的大小与右边面板的大小
10分....就懒得写代码了..

解决方案 »

  1.   

    我是这么做的啊,不过我移动不了LABEL,这个和布局有关系吗
      

  2.   

    这个是frame和iframe的区别 你去看看网上
    frame 好象是可以自由拉动的  iframe就不行
      

  3.   

    没人知道怎么实现拖动吗,我用的是JFRAME ,而且用了BorderLayout的布局,让tree在左边,panel在右边
      

  4.   

    package listen;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.*;
    import javax.swing.JSplitPane;
    import javax.swing.UIManager;
    import java.awt.event.WindowEvent;
    import javax.swing.JTree;
    public class MainPro extends JFrame {
        public MainPro() {
            try {
                jbInit();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }    public static void main(String[] args) {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (Exception e) {
                e.printStackTrace();
            }
            MainPro mainpro = new MainPro();        Toolkit thekit = mainpro.getToolkit();
            Dimension wnsize = thekit.getScreenSize();
            mainpro.setBounds(wnsize.width / 4, wnsize.height / 4, wnsize.width / 2,
                              wnsize.height / 2);
            mainpro.setVisible(true);    }    protected void processWindowEvent(WindowEvent e) {
            super.processWindowEvent(e);
            if (e.getID() == WindowEvent.WINDOW_CLOSING) {
                System.exit(0);
            }
        }    private void jbInit() throws Exception {
            LeftPanel.setBackground(Color.red);
            tree = new JTree();
            TreeMain treemain = new TreeMain();
            tree = treemain.getTree();
            LeftPanel.add(tree);
            RightPanel.setBackground(Color.orange);
            this.getContentPane().add(jSplitMainPane, java.awt.BorderLayout.CENTER);
            jSplitMainPane.add(LeftPanel, JSplitPane.LEFT);
            jSplitMainPane.add(RightPanel, JSplitPane.RIGHT);
            jSplitMainPane.setOneTouchExpandable(true);
        }    JSplitPane jSplitMainPane = new JSplitPane();
        JPanel LeftPanel = new JPanel();
        JPanel RightPanel = new JPanel();
        JTree tree = null;}
      

  5.   

    package listen;import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;public class TreeMain {
        TreeMain() {
            top = new DefaultMutableTreeNode("root");
            categorynode = new DefaultMutableTreeNode("node1");
            operationrode = new DefaultMutableTreeNode("node11");
            categorynode.add(operationrode);
            top.add(categorynode);        categorynode = new DefaultMutableTreeNode("node2");
            operationrode = new DefaultMutableTreeNode("node2");
            top.add(categorynode);
            tree = new JTree(top);
        }
        public JTree getTree()
        {
            return tree;
        }
        JTree tree = null;
        DefaultMutableTreeNode top = null;
        DefaultMutableTreeNode categorynode = null;
        DefaultMutableTreeNode operationrode = null;
    }