这是我第一次做的这个java通讯录,花了近三个小时,虽然这里面的东西不难理解,但是,需要记忆的东西比较多,在将这些代码复制到IDE中的时候要记得导包,一个是连接数据库的,还有一个是整个页面风格的,作为我的一个小小的学习笔记~
一共是由三部分组成:
1.LianXiRen.java
2.ChaXun.java
3.Conn
***********************************************************************************************************************************1----------------------------------------------------------------------------------------------------
package com.hlf.tongxunlu;
import java.awt.Component;
import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.skin.CremeSkin;
import org.jvnet.substance.skin.GreenMagicSkin;
import org.jvnet.substance.skin.SaharaSkin;
import org.jvnet.substance.skin.SubstanceAutumnLookAndFeel;
import org.jvnet.substance.skin.SubstanceSaharaLookAndFeel;
import org.jvnet.substance.theme.SubstanceAquaTheme;
public class LianXiRen extends JFrame {
JTree jtr;//一个树;
DefaultMutableTreeNode node;
DefaultMutableTreeNode family;
DefaultMutableTreeNode father;
DefaultMutableTreeNode mother;
DefaultMutableTreeNode friend;
DefaultMutableTreeNode xiaohe;
DefaultMutableTreeNode stranger;
//还需要一个分割面板,将左右的名称和树形图分割开来、
JSplitPane jsplitpane;
//还要一个用来在右边显示的滚动面板
JScrollPane jscrollpane;
public LianXiRen(){
Container con=this.getContentPane();//得到一个容器
//各个节点
node=new DefaultMutableTreeNode("我的通讯录");
family=new DefaultMutableTreeNode("家人");
father=new DefaultMutableTreeNode("爸爸");
mother=new DefaultMutableTreeNode("妈妈");
friend=new DefaultMutableTreeNode("同学");
xiaohe=new DefaultMutableTreeNode("小何");
stranger=new DefaultMutableTreeNode("陌生人");
//添加节点
family.add(father);
family.add(mother);
friend.add(xiaohe);
node.add(family);
node.add(friend);
node.add(stranger);
//将这些模型加载树上
jtr=new JTree(node);
//水平分隔面板
jsplitpane=new JSplitPane(jsplitpane.HORIZONTAL_SPLIT);
//1.将树加在左边
jsplitpane.setLeftComponent(jtr);
//2.右边是用来显示的 3.在右边添加一张图片
ImageIcon img=new ImageIcon(getClass().getResource("snow.jpg"));
JLabel j=new JLabel(img);
jscrollpane=new JScrollPane(j);
jsplitpane.setRightComponent(jscrollpane);
// jsplitpane.setLastDividerLocation(10000);
//添加树的监听器可以得到每次点击的是那一个节点,然后可以去数据库中查询
jtr.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
String name=e.getPath().getLastPathComponent().toString();
System.out.println(name);
if(name.equals("同学")){
jsplitpane.setRightComponent(new ChaXun(name));
}
if(name.equals("家人")){
jsplitpane.setRightComponent(new ChaXun(name));
}if(name.equals("妈妈")){
jsplitpane.setRightComponent(new ChaXun(name));
}if(name.equals("爸爸")){
jsplitpane.setRightComponent(new ChaXun(name));
}if(name.equals("小何")){
jsplitpane.setRightComponent(new ChaXun(name));
}
if(name.equals("陌生人")){
jsplitpane.setRightComponent(new ChaXun(name));
}
}
});
con.add(jsplitpane);
this.setBounds(200, 100, 800, 480);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(new SubstanceAutumnLookAndFeel());
// UIManager.put("swing.boldMetal", false);
if (System.getProperty("substancelaf.useDecorations") == null) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
}
System.setProperty("sun.awt.noerasebackground", "true");
// 设置当前的主题风格,同样我 们还可以设置当前的按钮形状,水印风格等等
SubstanceLookAndFeel.setCurrentTheme(new SubstanceAquaTheme());
SubstanceSaharaLookAndFeel.setSkin(new GreenMagicSkin());
} catch (Exception e) {
System.err.println("Oops! Something went wrong!");
}
LianXiRen lianxiren=new LianXiRen();
}
}
2.-------------------------------------------------------------------------------------------------------------------------------------------------------
package com.hlf.tongxunlu;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class ChaXun extends JPanel{
//新建一个面板,用来放置表格
JPanel jpanel=new JPanel();
//表格
JTable jtable=new JTable();
//下面是表格模型
DefaultTableModel model=new DefaultTableModel();
JScrollPane jsc = new JScrollPane(jtable);
static String name;
ChaXun(String name) {
//添加列名
this.name=name;
model.addColumn("分组");
model.addColumn("姓名");
model.addColumn("电话");
jtable.setModel(model);
getInfomation();
jpanel.setLayout(null);
jpanel.setBounds(0, 0, 200, 200);
this.add(jsc);
this.setLayout(null);
jsc.setBounds(0, 0, 650,450);
}
void getInfomation() {
Connection conn=Conn.getCon();
PreparedStatement pstmt=null;
PreparedStatement pstmt2=null;
String sql="select fz,name,phonenum from txl where fz=?";
String sql2="select fz,name,phonenum from txl where name=?";
try {
pstmt=conn.prepareStatement(sql);
pstmt2=conn.prepareStatement(sql2);
pstmt.setString(1, name);
pstmt2.setString(1, name);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("sql语句异常");
}
ResultSet rs=null;
ResultSet rs2=null;
try {
rs = pstmt.executeQuery();
while(rs.next()){
String fenzu=rs.getString(1);
String name=rs.getString(2);
String phone=rs.getString(3);
Vector v=new Vector();
v.add(fenzu);
v.add(name);
v.add(phone);
model.addRow(v);
}
rs2 = pstmt2.executeQuery();
while(rs2.next()){
String fenzu=rs2.getString(1);
String name=rs2.getString(2);
String phone=rs2.getString(3);
Vector v=new Vector();
v.add(fenzu);
v.add(name);
v.add(phone);
model.addRow(v);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("sql语句执行异常");
}
}
public JPanel getJPanel() {
return jpanel;
}
public static void main(String[] args) {
//新建的窗口
JFrame jframe=new JFrame();
ChaXun chaxun=new ChaXun(name);
//把最后的结果放在jframe中
jframe.getContentPane().add(chaxun.getJPanel());
jframe.setBounds(100, 100, 600, 500);
jframe.setVisible(true);
jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
}
}
3.----------------------------------------------------------------------------------------------------------------
package com.hlf.tongxunlu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conn {
private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=lxr";
private static String user="sa";
private static String password="sa";
static Connection getCon(){
Connection connection = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("驱动加载失败");
}
try {
connection=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("数据库连接失败");
}
return connection;
}
// public static void main(String[] args) {
// new Conn().getCon();
// }
}