hehe !
这个问题我以前也碰到过!
后来,我查看代码是我的选择侦听事件注册器,注册了两次!
呵呵!
看看能给你什么启发吗?
呵呵1

解决方案 »

  1.   

    void jMenuFileOpen_actionPerformed(ActionEvent e) {
        boolean  bResult=true;
        String filename=null;
        File file=null;    fc.setFileFilter(new ExampleFileFilter("cn","Concept Network files"));
        fc.setAcceptAllFileFilterUsed(false);
        int returnVal = fc.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
          file=fc.getSelectedFile();
          filename = file.getPath();
        }else{
          //the user push the Cancel button
        }
        //the following code is just for test
        ObjectInputStream in1=null;    File f=new File(filename);
        try{
            in1 = new ObjectInputStream(new FileInputStream(f));
            jTree1=(JTree)in1.readObject();
        }catch(IOException e1){
            JOptionPane.showMessageDialog(null,"failed to read file!","Error",0);
        }catch(ClassNotFoundException e2){
            JOptionPane.showMessageDialog(null,"cannot find the class file"+filename+"!","Error",0);
        }
        jTree1.setModel(treeModel);
        treeModel.addTreeModelListener(new MyTreeModelListener());
        //Listen for when the selection changes.
        jTree1.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e) {
              jTree1_valueChanged(e);
            }
        });
        MouseListener popupListener = new PopupListener();
        jTree1.addMouseListener(popupListener);//han    scrollPane=new JScrollPane(jTree1);
        jSplitPane1.setLeftComponent(scrollPane);
        jSplitPane1.setDividerLocation(200);
        jSplitPane1.validate();
      }
    初始化的时候也有一段代码:
    //Create the nodes.
        root=new DefaultMutableTreeNode(new Concept("root","ROOT"));
        treeModel=new DefaultTreeModel(root);
        treeModel.addTreeModelListener(new MyTreeModelListener());
        jTree1= new JTree(root);
        createNodes(root);
        jTree1.setAutoscrolls(true);
        jTree1.setBorder(BorderFactory.createEtchedBorder());
        jTree1.setEditable(false);
        jTree1.setModel(treeModel);
        jTree1.setRootVisible(false);
        jTree1.setShowsRootHandles(true);
        scrollPane = new JScrollPane(jTree1);
        //Create a tree that allows one selection at a time.
        jTree1.getSelectionModel().setSelectionMode
                (TreeSelectionModel.SINGLE_TREE_SELECTION);
        //Listen for when the selection changes.
        jTree1.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e) {
              jTree1_valueChanged(e);
            }
        });
        //Add listener to components that can bring up popup menus.
        MouseListener popupListener = new PopupListener();
        jTree1.addMouseListener(popupListener);//han