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("鼠标操作出错!");
}
}
}
}
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("鼠标操作出错!");
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货