📄 mytreebean.java
字号:
package Communication;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
public class myTreeBean extends JPanel
{
Icon icon;
JLabel na=new JLabel("姓名:",SwingConstants.CENTER);
JLabel ad=new JLabel("联系住址:",SwingConstants.CENTER);
JLabel ph=new JLabel("电话号码:",SwingConstants.CENTER);
JLabel mp=new JLabel("手机号码:",SwingConstants.CENTER);
JLabel qq=new JLabel("QQ号:",SwingConstants.CENTER);
JLabel em=new JLabel("Email",SwingConstants.CENTER);
JLabel se=new JLabel("性别:",SwingConstants.CENTER);
JLabel name=new JLabel();
JLabel address=new JLabel();
JLabel phone=new JLabel();
JLabel mobilephone=new JLabel();
JLabel QQ=new JLabel();
JLabel email=new JLabel();
JLabel SEX =new JLabel();
JTree mytree;
DefaultMutableTreeNode dmtn[]=new DefaultMutableTreeNode[1000];
DefaultMutableTreeNode root;
DefaultMutableTreeNode root1;//我的同学
DefaultMutableTreeNode root2;//我的朋友
DefaultMutableTreeNode root3;//我的家人
DefaultTreeModel model;
JPanel contentp=new JPanel();
JPanel p1=new JPanel();
JSplitPane jsp1=new JSplitPane();
JScrollPane jsp2;
myDatabaseBean mdbb=new myDatabaseBean();
JButton btsearch=new JButton("查询");
JTextField tfs=new JTextField(10);
JTextField zrs=new JTextField();
int total=0;
public myTreeBean()
{
mytree=new JTree();
//mytree.setBackground(Color.green);
model=(DefaultTreeModel)mytree.getModel();
initMyTree();
initContentPanel();
setLayout(new BorderLayout());
jsp2=new JScrollPane(mytree);
jsp2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jsp1.setLeftComponent(jsp2);
jsp1.setRightComponent(contentp);
add(jsp1,"Center");
p1.setLayout(new GridLayout(1,1,0,0)); //南面面板
JPanel pp1=new JPanel();
pp1.setLayout(new FlowLayout());
total=mdbb.getCount();
zrs=new JTextField("通讯录总人数"+total+"人");
zrs.setEditable(false);
zrs.setForeground(Color.red);
pp1.add(zrs);
pp1.add(new JLabel("您可以在这里查询:",new ImageIcon("Images/tips.gif"),SwingConstants.HORIZONTAL));
pp1.add(tfs);
pp1.add(btsearch);
p1.add(pp1);
add(p1,"South");
btsearch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String name=tfs.getText().intern();
if(!name.trim().equals(""))
{
if(mdbb.getPersonInfo(name).name!=null)
updateContentPanel(mdbb.getPersonInfo(name));
}
}
});
mytree.addTreeSelectionListener(new TreeSelectionListener()
{
public void valueChanged(TreeSelectionEvent ee) //树响应事件
{
if(mytree.getLastSelectedPathComponent()!=null)
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode)mytree.getLastSelectedPathComponent();
if(node.isLeaf())
{
String name=node.toString();
if(mdbb.getPersonInfo(name).name!=null)
updateContentPanel(mdbb.getPersonInfo(name));
}
if(node.isRoot())
{
mdbb.readDatabase();
total=mdbb.getCount();
System.out.println(total);
zrs.setText("通讯录总人数"+total+"人");
updateTreeNode();
initContentPanel();
}
}
}
});
}
public void initMyTree()
{
root=new DefaultMutableTreeNode("我的微型通讯录");
model.setRoot(root);
root1=new DefaultMutableTreeNode("我的同学");
root2=new DefaultMutableTreeNode("我的亲人");
root3=new DefaultMutableTreeNode("我的朋友");
model.insertNodeInto(root1,root,0);
model.insertNodeInto(root2,root,0);
model.insertNodeInto(root3,root,0);
// root.add(root1);
// root.add(root2);
// root.add(root3);
for(int i=1;i<=mdbb.getPersonCount();i++)
{
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode(mdbb.r(i).name);
if(mdbb.r(i).mode==1)
model.insertNodeInto(leafnode,root1,0);
if(mdbb.r(i).mode==2)
model.insertNodeInto(leafnode,root2,0);
if(mdbb.r(i).mode==3)
model.insertNodeInto(leafnode,root3,0);
}
mytree.expandPath(mytree.getPathForRow(0));
}
public void updateTreeNode()
{
root1.removeAllChildren();
root2.removeAllChildren();
root3.removeAllChildren();
model.removeNodeFromParent(root1);
model.removeNodeFromParent(root2);
model.removeNodeFromParent(root3);
model.insertNodeInto(root1,root,0);
model.insertNodeInto(root2,root,0);
model.insertNodeInto(root3,root,0);
for(int i=1;i<=mdbb.getPersonCount();i++)
{
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode(mdbb.r(i).name);
if(mdbb.r(i).mode==1)
model.insertNodeInto(leafnode,root1,0);
if(mdbb.r(i).mode==2)
model.insertNodeInto(leafnode,root2,0);
if(mdbb.r(i).mode==3)
model.insertNodeInto(leafnode,root3,0);
}
}
public void updateContentPanel(myPersonBean person)
{
if(person.sex==true)
icon=new ImageIcon("Images/nan.jpg");
else
icon=new ImageIcon("Images/nv.jpg");
name.setIcon(icon);
name.setText(person.name);
name.setHorizontalAlignment(SwingConstants.LEFT);
address.setText(person.address);
phone.setText(person.homephone);
mobilephone.setText(person.mobilephone);
QQ.setText(person.QQ);
email.setText(person.email);
if(person.sex)
this.SEX.setText("男");
else
this.SEX.setText("女");
}
public void initContentPanel()
{
contentp.setBackground(Color.white);
contentp.setLayout(new GridLayout(7,2,0,0));
if(mdbb.getPersonCount()!=0)
{
myPersonBean person=mdbb.r(1);
if(person.sex==true)
icon=new ImageIcon("Images/nan.jpg");
else
icon=new ImageIcon("Images/nv.jpg");
name.setIcon(icon);
name.setText(person.name);
name.setHorizontalAlignment(SwingConstants.LEFT);
contentp.add(na);
contentp.add(name);
address.setText(person.address);
contentp.add(ad);
contentp.add(address);
phone.setText(person.homephone);
contentp.add(ph);
contentp.add(phone);
mobilephone.setText(person.mobilephone);
contentp.add(mp);
contentp.add(mobilephone);
contentp.add(qq);
QQ.setText(person.QQ);
contentp.add(QQ);
contentp.add(em);
email.setText(person.email);
contentp.add(email);
if(person.sex)
SEX.setText("男");
else
SEX.setText("女");
contentp.add(se);
contentp.add(SEX);
}
}
public void removeNode() //删除某个结点
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode)mytree.getLastSelectedPathComponent();
DefaultMutableTreeNode r=(DefaultMutableTreeNode)node.getParent();
try
{
model.removeNodeFromParent(node);
}
catch(Exception e)
{}
mdbb.deletePerson(node.toString());
System.out.println(node.toString());
}
public DefaultMutableTreeNode getSelectedNode() //获取当前选择的结点
{
if(mytree.getLastSelectedPathComponent()!=null)
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode) mytree.getLastSelectedPathComponent();
return node;
}
return null;
}
public boolean selectedIsLeaf() //判断当前结点是否是叶子结点
{
if(mytree.getLastSelectedPathComponent()!=null)
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode) mytree.getLastSelectedPathComponent();
if(node.isLeaf())
return true;
else
return false;
}
return false;
}
public myPersonBean getSelected() //获取当前选择结点对应的人属性值
{
DefaultMutableTreeNode node=(DefaultMutableTreeNode) mytree.getLastSelectedPathComponent();
if(node.isLeaf())
{
return mdbb.getPersonInfo(node.toString());
}
return null;
}
public static void main(String args[])
{
JFrame jf=new JFrame();
myTreeBean mtb=new myTreeBean();
jf.add(mtb);
jf.setSize(500,300);
jf.show();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -