1.本程序可以正常运行,只是我每一点jtree的空白处,就是说没有选中节点,而在非节点处点击鼠标,在dos中就会出现如图的抱错信息,但鼠标点击右边的panel里任何地方不报错。虽然不影响该程序的运行,我想知道怎样把鼠标处理事件给抛出,比如我没有点tree的节点的时候,可以在dos中写出一句“你没有点击节点”。谢谢
2.本程序如果没有选中“所有班级”节点或者其子节点时进行“创建连队”的操作时,也在dos里报错,我想实现如果没有选中“所有班级”节点或者其子节点时进行“创建连队”的操作时,dos报错“你没有选中节点”而不是抛出一大串的抱错信息。谢谢import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.sql.*;public class createCompany extends JFrame implements ActionListener,TreeModelListener
{
   public static void main(String args[])
   {
       new createCompany();
   }
   private Connection con1;
   private Statement state1;
   private JSplitPane splitPane;
   private JPanel panel1,panel2;
   private JScrollPane scroller1,scroller2;
   private JTree tree;
   private DefaultTreeModel treeModel=null;
   private JButton b1,b2,b3;
   private JLabel Label;
   private String nodeName=null;
   
   public createCompany()
   {
       super("创建班级");
       Container c=getContentPane();
       c.setLayout(new BorderLayout());
       
       Label=new JLabel("Action");
       c.add(Label,BorderLayout.SOUTH);
      
       DefaultMutableTreeNode root=new DefaultMutableTreeNode("所有班级");
       tree=new JTree(root);
       tree.setEditable(true);
       tree.addMouseListener(new MouseHandle());
       treeModel=(DefaultTreeModel)tree.getModel();
       treeModel.addTreeModelListener(this);
       scroller1=new JScrollPane();
       scroller1.setViewportView(tree);
       
       panel1=new JPanel();
       panel1.setLayout(new GridLayout(3,1));
       b1=new JButton("创建连队");
       b1.addActionListener(this);
       panel1.add(b1);
       b2=new JButton("删除连队");
       b2.addActionListener(this);
       panel1.add(b2);
       b3=new JButton("删除所有");
       b3.addActionListener(this);
       panel1.add(b3);
       
       panel2=new JPanel();
       panel2.setLayout(new BorderLayout());
       panel2.add(panel1,BorderLayout.NORTH);
       
       splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scroller1,panel2);
       c.add(splitPane,BorderLayout.CENTER);
       
       
       setSize(400,300);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
       addWindowListener(new WindowAdapter(){
       public void windowClosing(WindowEvent e)
       {
           System.exit(0);
       }
            }
        );
       
       
       
           
   }
   
   
    public void actionPerformed(ActionEvent e)
   {
       if(e.getSource()==b1)
       {
           DefaultMutableTreeNode parentNode=null;
           DefaultMutableTreeNode newNode=new DefaultMutableTreeNode("新节点");
           newNode.setAllowsChildren(true);
           TreePath parentPath=tree.getSelectionPath();
           parentNode=(DefaultMutableTreeNode)(parentPath.getLastPathComponent());
           treeModel.insertNodeInto(newNode,parentNode,parentNode.getChildCount());
           tree.scrollPathToVisible(new TreePath(newNode.getPath()));
           Label.setText("新增节点成功!");
       }
       if(e.getSource()==b2)
       {
           TreePath treePath=tree.getSelectionPath();
           if(treePath!=null)
           {
               DefaultMutableTreeNode selectionNode=(DefaultMutableTreeNode)treePath.getLastPathComponent();
               TreeNode parent=(TreeNode)selectionNode.getParent();
               if(parent!=null)
               {
                   treeModel.removeNodeFromParent(selectionNode);
                   Label.setText("删除节点成功");
               }
           }
       }
       if(e.getSource()==b3)
       {
           DefaultMutableTreeNode rootNode=(DefaultMutableTreeNode)treeModel.getRoot();
           rootNode.removeAllChildren();
           treeModel.reload();
           Label.setText("清除所有节点成功");
       }
   }
   
   public void treeNodesChanged(TreeModelEvent e)
   {
       TreePath treePath=e.getTreePath();
       DefaultMutableTreeNode node=(DefaultMutableTreeNode)treePath.getLastPathComponent();
       try
       {
           int[] index=e.getChildIndices();
           node=(DefaultMutableTreeNode)node.getChildAt(index[0]);
       }
       catch(NullPointerException exc)
       {
           exc.printStackTrace();
       }
           Label.setText(nodeName+"更改数据为:"+(String)node.getUserObject());
       
   }
   public void treeNodesInserted(TreeModelEvent e)
   {
   System.out.println("新节点插入");
      
   }
   public void treeNodesRemoved(TreeModelEvent e)
   {
       System.out.println("节点删除");
   }
   public void treeStructureChanged(TreeModelEvent e)
   {
       System.out.println("结构改变");
   }
   
   class MouseHandle extends MouseAdapter//在此的鼠标出错,如何才能使本程序不出错
   {
       public void mousePressed(MouseEvent e)
       {
           try
           {
               JTree tree=(JTree)e.getSource();
               //int rowLocation=tree.getRowForLocation(e.getX(),e.getY());
               //TreePath treePath=tree.getPathForRow(rowLocation);
               TreePath treePath=tree.getSelectionPath();
               TreeNode treenode=(TreeNode)treePath.getLastPathComponent();
               
               
               nodeName=treenode.toString();
           }
           catch(NullPointerException ne)
           {
               ne.printStackTrace();
               System.out.println("鼠标操作出错!");
           }
       }
   }
   
}