📄 communicationbook.java
字号:
builder.add(companyNameLabel,cc.xy(1,1));
builder.add(companyNameField,cc.xyw(3,1,5));
builder.add(countryLabel,cc.xy(1,3));
builder.add(countryField,cc.xy(3,3));
builder.add(provinceLabel,cc.xy(5,3));
builder.add(provinceField,cc.xy(7,3));
builder.add(townLabel,cc.xy(1,5));
builder.add(townField,cc.xy(3,5));
builder.add(postNumLabel,cc.xy(5,5));
builder.add(postNumField,cc.xy(7,5));
builder.add(addressLabel,cc.xy(1,7));
builder.add(addressField,cc.xyw(3,7,5));
builder.add(companyPhoneLabel,cc.xy(1,9));
builder.add(companyPhoneField,cc.xyw(3,9,5));
builder.add(companyFaxLabel,cc.xy(1,11));
builder.add(companyFaxField,cc.xyw(3,11,5));
builder.add(companyWebSiteLabel,cc.xy(1,13));
builder.add(companyWebsiteField,cc.xyw(3,13,5));
builder.add(positionLabel,cc.xy(1,15));
builder.add(positionField,cc.xy(3,15));
builder.add(departmentLabel,cc.xy(5,15));
builder.add(departmentField,cc.xy(7,15));
builder.add(otherLabel,cc.xy(1,17));
builder.add(otherArea,cc.xywh(2,17,6,2));
return builder.getPanel();
}
}
//-------------------------------------------------------------------------
class LeftControlPane implements ActionListener,ListSelectionListener
{
private JLabel searchKeyWordTypeLabel;//查询关键字类型标签
private JLabel sortTypeLabel;//查询结果排序方式标签
private JLabel searchKeyWordLabel;//查询关键字标签
private JLabel captionLabel;//主题标签;
private JComboBox searchKeyWordTypeBox;//查询关键字类型选择框
private JComboBox sortTypeBox;//查询结果排序方式选择框
private JTextField searchKeyWordField;//查询关键字文本框
private JButton searchButton;//查询按钮
private JButton addButton;//添加按钮;
private JTable table; //显示查询结果的表格控件
private JScrollPane tablePane;//放置表格控件的Panel容器;
private MyTableModel myTableModel;//表格控件的数据模型类;
//private RowSorter<TableModel> sorter;//表格控件中用于对查询结果排序的类;
private String sqlstr;//程序初始化时的查询语句
private String sqlstrForCount;//统计查询结果个数的查询语句;
private ListSelectionModel listSelectionModel;//表格控件的选择模型类
private OperateToDetailInfor operToDetailInfor;//对详细信息进行操作的类
//private TablePane resultTablePane;
//private OperateToDetailInfor operToDetailInfor;
public LeftControlPane(OperateToDetailInfor oper)
{
operToDetailInfor=oper;
}
private void initComponent()
{
//String[] items={"首拼","姓名","关系","生日","手机","家庭电话","单位电话"};
String[] items={"姓名","关系","生日","手机","家庭电话","单位电话"};
searchKeyWordTypeLabel=new JLabel("关键字类型");
sortTypeLabel=new JLabel("结果排序类型");
searchKeyWordLabel=new JLabel("关键字");
captionLabel=new JLabel("Bear的通讯录");
searchKeyWordTypeBox=new JComboBox(items);
sortTypeBox=new JComboBox(items);
searchKeyWordField=new JTextField(10);
searchButton=new JButton("查询");
addButton=new JButton("添加");
searchKeyWordField.setText("全部");
searchButton.addActionListener(this);
//-----------------------------------------------------------------------------------------------------------
sqlstr="select 姓名,性别,关系,生日,手机,爱好 from personinfor";
sqlstrForCount="select * from personinfor";
myTableModel=new MyTableModel(sqlstr,sqlstrForCount);
//sorter=new TableRowSorter<TableModel>(myTableModel);
table=new JTable(myTableModel);
//table.setRowSorter(sorter);
//table.setAutoCreateRowSorter(true);
//table.setPreferredScrollableViewportSize(new Dimension(500,70));
// table.setFillsViewportHeight(true);
tablePane=new JScrollPane(table);
listSelectionModel=table.getSelectionModel();
listSelectionModel.addListSelectionListener(this);
listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setSelectionModel(listSelectionModel);
}
public JComponent buildPanel()
{
initComponent();
FormLayout layout=new FormLayout(
"2cm,right:pref,3dlu,3cm,1cm,right:pref,3dlu,3cm,2cm",
"p,3dlu,p,1cm,12cm");
PanelBuilder builder=new PanelBuilder(layout);
builder.setDefaultDialogBorder();
CellConstraints cc=new CellConstraints();
builder.add(searchKeyWordTypeLabel,cc.xy(2,1));
builder.add(searchKeyWordTypeBox,cc.xy(4,1));
builder.add(searchKeyWordLabel,cc.xy(6,1));
builder.add(searchKeyWordField,cc.xy(8,1));
//builder.add(sortTypeLabel,cc.xy(2,3));
//builder.add(sortTypeBox,cc.xy(4,3));
builder.add(searchButton,cc.xy(6,3));
//builder.add(addButton,cc.xy(8,3));
builder.add(tablePane,cc.xyw(1,5,9));
return builder.getPanel();
}
public void actionPerformed(ActionEvent e)
{
String searchType=String.valueOf(searchKeyWordTypeBox.getSelectedItem());
String searchKeyWords=searchKeyWordField.getText();
String sqlStr;
String sqlStrForCount;
if(searchKeyWords.equals("全部"))
{
sqlStr="select 姓名,性别,关系,生日,手机,爱好 from personinfor";
sqlStrForCount="select count(*)from personinfor";
}
else
{
sqlStr="select 姓名,性别,关系,生日,手机,爱好 from personinfor where "+searchType+"='"+searchKeyWords+"'";
sqlStrForCount="select count(*)from personinfor where "+searchType+"='"+searchKeyWords+"'";
}
TableUpdate(sqlStr,sqlStrForCount);
}
public void TableUpdate(String sqlStr,String sqlStrForCount)
{
myTableModel=new MyTableModel(sqlStr,sqlStrForCount);
table.setModel(myTableModel);
// table.setAutoCreateRowSorter(true);
//table.validate();
//table.repaint();
}
public void valueChanged(ListSelectionEvent e)
{
if(table.getSelectedRowCount()!=0)
{
int selectRowIndex=table.getSelectedRow();
if(e.getValueIsAdjusting())
{
String personName=(String)table.getValueAt(selectRowIndex,0);
operToDetailInfor.setName(personName);
operToDetailInfor.DisplayDetailInfor();
}
}
}
}
//--------------------------------------------------------------------------
class MyTableModel extends AbstractTableModel
{
private String[] columnNames;
private Object[][] data;
private ResultSet rs;
private ConToMysql con;
public MyTableModel(String sqlstr,String sqlstrForCount)
{
initData(sqlstr,sqlstrForCount);
}
public int getColumnCount()
{
return columnNames.length;
}
public int getRowCount()
{
return data.length;
}
public String getColumnName(int col)
{
return columnNames[col];
}
public Object getValueAt(int row,int col)
{
return data[row][col];
}
public void initData(String sqlstr,String sqlstrForCount)
{
//String sqlstr="select 姓名,性别,关系,生日,手机from book";
//String sqlstrForCount="select count(*)from personinfor";//get the rowNumber of the table;
int rowNum=0;
int colNum=0;
con=new ConToMysql();
rs=con.Search(sqlstrForCount);
try{
rs.next();
rowNum=rs.getInt(1);
rs=con.Search(sqlstr);
ResultSetMetaData rsmd=rs.getMetaData();
colNum=rsmd.getColumnCount();
columnNames=new String[colNum];
for(int i=1;i<=colNum;i++)
{
columnNames[i-1]=rsmd.getColumnName(i);
}
data=new Object[rowNum][colNum];
int i=0;
while(rs.next())
{
for(int j=1;j<=colNum;j++)
{
data[i][j-1]=rs.getObject(j);
}
i++;
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
//--------------------------------------------------------------------------
class ConToMysql
{
private String dbDriver="org.gjt.mm.mysql.Driver";//连接数据库的驱动
private String URL="jdbc:mysql://localhost:3306/communicationbook";//连接地址
private String user="root"; //数据库用户名
private String passwd="123"; //数据库密码
Connection con;
Statement sm;
ResultSet rs;
boolean state;
public ConToMysql()
{
con=null;
sm=null;
rs=null;
state=false;
}
public void getConnect() //连接到数据库
{
try{
Class.forName(dbDriver);
con=DriverManager.getConnection(URL,user,passwd);
if(con!=null)
state=true;
}catch(Exception e)
{
e.printStackTrace();
}
}
public boolean getState()//返回连接成功的状态
{
return state;
}
public ResultSet Search(String sqlString) //根据参数提供的查询参数返回查询结果。
{
if(con==null)
{
getConnect();
}
try{
sm=con.createStatement();
rs=sm.executeQuery(sqlString);
}catch(Exception e)
{
e.printStackTrace();
}
return rs;
}
}
class OperateToDetailInfor
{
PersonInforPanel personInforPanel;
FamilyInforPanel familyInforPanel;
CompanyInforPanel companyInforPanel;
ConToMysql conToMysql;
ResultSet rs;
String name;
public OperateToDetailInfor(PersonInforPanel p,FamilyInforPanel f,CompanyInforPanel c)
{
personInforPanel=p;
familyInforPanel=f;
companyInforPanel=c;
conToMysql=new ConToMysql();
rs=null;
name="";
}
public void setName(String n)
{
name=n;
}
public void DisplayDetailInfor()
{
String companyNum;
String familyNum;
String familyAddressNum;
String companyAddressNum;
String sqlstr1="select * from personinfor where 姓名='"+name+"'";
try{
rs=conToMysql.Search(sqlstr1);
rs.next();
companyNum=rs.getString("单位号");
familyNum=rs.getString("家庭号");
personInforPanel.personNameField.setText(rs.getString("姓名"));
personInforPanel.personBirthDateField.setText(rs.getString("生日"));
personInforPanel.personFancyField.setText(rs.getString("爱好"));
personInforPanel.personSpecialtyField.setText(rs.getString("特长"));
personInforPanel.personCellPhoneField.setText(rs.getString("手机"));
personInforPanel.personCallPhoneField.setText(rs.getString("寻呼"));
personInforPanel.personQQField.setText(rs.getString("QQ"));
personInforPanel.personEmailField.setText(rs.getString("电子邮件"));
personInforPanel.personWebsiteField.setText(rs.getString("个人主页"));
personInforPanel.personSexField.setText(rs.getString("性别"));
personInforPanel.personRelationField.setText(rs.getString("关系"));
personInforPanel.picturePanel.setPicPath(rs.getString("照片路径"));
personInforPanel.picturePanel.update();
String sqlstr2="select * from familyinfor where 家庭号='"+familyNum+"'";
String sqlstr3="select * from companyinfor where 单位号='"+companyNum+"'";
rs=conToMysql.Search(sqlstr2);
rs.next();
familyAddressNum=rs.getString("地址号");
String sqlstr4="select * from address where 地址号='"+familyAddressNum+"'";
familyInforPanel.homePhoneField.setText(rs.getString("家庭电话"));
familyInforPanel.homeFaxField.setText(rs.getString("家庭传真"));
rs=conToMysql.Search(sqlstr4);
rs.next();
familyInforPanel.postNumField.setText(rs.getString("邮政编码"));
familyInforPanel.addressField.setText(rs.getString("门牌地址"));
familyInforPanel.countryField.setText(rs.getString("国家/地区"));
familyInforPanel.provinceField.setText(rs.getString("省市/自治区"));
familyInforPanel.townField.setText(rs.getString("县州市"));
rs=conToMysql.Search(sqlstr3);
rs.next();
companyAddressNum=rs.getString("地址号");
companyInforPanel.companyNameField.setText(rs.getString("单位名"));
companyInforPanel.companyPhoneField.setText(rs.getString("单位电话"));
companyInforPanel.companyFaxField.setText(rs.getString("单位传真"));
companyInforPanel.companyWebsiteField.setText(rs.getString("单位主页"));
companyInforPanel.positionField.setText(rs.getString("职位"));
companyInforPanel.departmentField.setText(rs.getString("部门"));
String sqlstr5="select * from address where 地址号='"+companyAddressNum+"'";
rs=conToMysql.Search(sqlstr5);
rs.next();
companyInforPanel.postNumField.setText(rs.getString("邮政编码"));
companyInforPanel.addressField.setText(rs.getString("门牌地址"));
companyInforPanel.countryField.setText(rs.getString("国家/地区"));
companyInforPanel.provinceField.setText(rs.getString("省市/自治区"));
companyInforPanel.townField.setText(rs.getString("县州市"));
}catch(Exception e)
{
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -