📄 chadlg.java
字号:
/*更改联系人信息对话框*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;
class ChaDlg extends JDialog
{
public ChaDlg(JFrame frame,String item,String key)
{
super(frame,"修改联系人",true);//调用超类构造函数,设置为有模式的对话框
this.item=item;
this.key=key;
Toolkit kit=Toolkit.getDefaultToolkit();//获取默认的工具
Dimension screenSize=kit.getScreenSize();
int screenWidth=screenSize.width;//获得屏幕宽度
int screenHeight=screenSize.height;//获得屏幕高度
setSize(screenWidth/2,screenHeight/2);//大小
setLocation(screenWidth/4,screenHeight/4);//位置
initDlg();//对组件进行设置
connData();//查找数据库,显示相关信息
}
public void initDlg()
{
add(panel);// 增加面板
panel.setLayout(null);//设置容器的布局管理器
/*--------------设置资料-------------------------*/
nameLabel.setFont(new Font("Dialog",Font.BOLD,15));//设置字体
nameLabel.setBounds(new Rectangle(280,30,60,15));//标签位置
nameLabel.setText("姓 名:");//设置文字
panel.add(nameLabel);//标签增加到面板中
sexLabel.setFont(new Font("Dialog",Font.BOLD,15));//设置字体
sexLabel.setBounds(new Rectangle(280,60,60,15));//标签位置
sexLabel.setText("姓 别:");//设置文字 setEditable(boolean aFlag) 确定 JComboBox 字段是否可编辑
panel.add(sexLabel);//标签增加到面板中
telLabel.setFont(new Font("Dialog",Font.BOLD,15));
telLabel.setBounds(new Rectangle(280,98,60,15));
telLabel.setText("电 话:");
panel.add(telLabel);
mobLabel.setFont(new Font("Dialog",Font.BOLD,15));
mobLabel.setBounds(new Rectangle(280,128,60,15));
mobLabel.setText("手 机:");
panel.add(mobLabel);
qqLabel.setFont(new Font("Dialog",Font.BOLD,15));
qqLabel.setBounds(new Rectangle(280,158,60,15));
qqLabel.setText("Q Q:");
panel.add(qqLabel);
emaLabel.setFont(new Font("Dialog",Font.BOLD,15));
emaLabel.setBounds(new Rectangle(280,188,60,15));
emaLabel.setText("邮 箱:");
panel.add(emaLabel);
groLabel.setFont(new Font("Dialog",Font.BOLD,15));//设置字体
groLabel.setBounds(new Rectangle(280,220,60,15));//标签位置
groLabel.setText("分 组:");//设置文字 setEditable(boolean aFlag) 确定 JComboBox 字段是否可编辑
panel.add(groLabel);//标签增加到面板中
//
nameTextField.setText("");
nameTextField.setFont(new Font("Dialog",Font.BOLD,15));
nameTextField.setBounds(new Rectangle(350, 24, 80, 20));//输入姓名
panel.add(nameTextField);
sexCombo = new JComboBox(new String[]{"男","女"});
sexCombo.setFont(new Font("Dialog",Font.BOLD,15));
sexCombo.setBounds(new Rectangle(350,54,80,20));
panel.add(sexCombo);
telTextField.setText("");
telTextField.setBounds(new Rectangle(350, 95, 110, 20));//输入电话
telTextField.setFont(new Font("Dialog",Font.BOLD,15));
panel.add(telTextField);
mobTextField.setText("");
mobTextField.setFont(new Font("Dialog",Font.BOLD,15));
mobTextField.setBounds(new Rectangle(350, 125, 140, 20));//输入手机
panel.add(mobTextField);
qqTextField.setText("");
qqTextField.setBounds(new Rectangle(350, 155, 110, 20));//输入QQ
qqTextField.setFont(new Font("Dialog",Font.BOLD,15));
panel.add(qqTextField);
emaTextField.setText("");
emaTextField.setFont(new Font("Dialog",Font.BOLD,15));
emaTextField.setBounds(new Rectangle(350, 185, 150, 20));//输入E-mail
panel.add(emaTextField);
groCombo = new JComboBox(new String[]{"家人","同事","朋友","同学","其他"});
groCombo.setFont(new Font("Dialog",Font.BOLD,15));
groCombo.setBounds(new Rectangle(350,220,80,20));
panel.add(groCombo);
/*--------------设置图像--------------------------*/
chooser.setCurrentDirectory(new File("."));//设置当前目录
picLabel.setBounds(new Rectangle(30,30,200,200));
panel.add(picLabel);//用来显示图像的
pathLabel.setFont(new Font("Dialog",Font.BOLD,15));
pathLabel.setBounds(new Rectangle(20,250,70,15));
pathLabel.setText("图像路径:");
panel.add(pathLabel);
pathTextField.setBounds(new Rectangle(110, 250, 140, 20));//图象路径名
pathTextField.setEnabled(false);//设置不可更改
panel.add(pathTextField);
picButton.setFont(new Font("Dialog",Font.BOLD,15));
picButton.setBounds(new Rectangle(260,250,80,20));//选择图像按钮
picButton.setText("选 择:");
picButton.addActionListener(new ChaDlgListener(this));//为按钮增加一个监听器
panel.add(picButton);
/*--------------设置下面的三个按钮--------------------------*/
preButton.setFont(new Font("Dialog",Font.BOLD,15));
preButton.setBounds(new Rectangle(100,310,80,25));
preButton.setText("上一条");
preButton.addActionListener(new ChaDlgListener(this));
panel.add(preButton);
nextButton.setFont(new Font("Dialog",Font.BOLD,15));
nextButton.setBounds(new Rectangle(200,310,80,25));
nextButton.setText("下一条");
nextButton.addActionListener(new ChaDlgListener(this));//为按钮增加一个监听器
panel.add(nextButton);
saveButton.setFont(new Font("Dialog",Font.BOLD,15));
saveButton.setBounds(new Rectangle(300,310,80,25));
saveButton.setText("保 存");
saveButton.addActionListener(new ChaDlgListener(this));//为按钮增加一个监听器
panel.add(saveButton);
}
public void connData()
{
try
{
String sql="select * from Book where "+item+"='"+key+"'";//执行给定的 SQL 语句,该语句返回单个 ResultSet 对象
rs=connDB.executeQuery(sql);
if (rs.next())//将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前;
//第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推
{
num=rs.getInt("Number");
nameTextField.setText(rs.getString("姓名"));//获取字符集的字段
telTextField.setText(rs.getString("电话"));
mobTextField.setText(rs.getString("手机"));
qqTextField.setText(rs.getString("QQ"));
emaTextField.setText(rs.getString("Email"));
sexCombo.setSelectedIndex(rs.getInt("Sex"));
groCombo.setSelectedItem(rs.getString("分组"));
String pict="Images//"+rs.getString("Picture");
ImageIcon image= new ImageIcon(pict);//根据图像路径创建一个图象引用
picLabel.setIcon(image);//设置图像
pathTextField.setText(pict);//
if (!rs.next())//获取记录集的下一个记录集,如果不存在,刚"下一条"按钮不激活
nextButton.setEnabled(false);
if(!rs.previous());//获取记录集的上一个记录集,如果不存在,刚"上一条"按钮不激活
preButton.setEnabled(false);
}
else//如果记录集为空
JOptionPane.showMessageDialog(null, "没有您要查找的联系人", "警告",JOptionPane.WARNING_MESSAGE);
}
catch (Exception eg)
{
JOptionPane.showMessageDialog(null, "数据库连接失败", "警告",JOptionPane.WARNING_MESSAGE);
eg.printStackTrace();
}
}
public void savePerformed()
{//确定
if( JOptionPane.showConfirmDialog(null,"确定要修改该信息吗?","修改确定",JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE)==0)
{
String tel=telTextField.getText();
String mobile=mobTextField.getText();
String qq=qqTextField.getText();
String email=emaTextField.getText();
int sex=sexCombo.getSelectedIndex();//返回列表中与给定项匹配的第一个选项
String group=(String)groCombo.getSelectedItem() ;//返回列表中所选项
String pic="00000000000000.jpg";
String name=nameTextField.getText();
if(name.equals(""))//联系人姓名不能为空
JOptionPane.showMessageDialog(null,"联系人姓名不能为空","警告",JOptionPane.WARNING_MESSAGE);
if (!picPath.equals(""))
// "图象不为空",进行复制
{
try{
File file = new File("images");
file.mkdir();//创建此抽象路径名指定的目录
String paths = file.getAbsolutePath();
//将附件以当前时间+附件名扩展名作为文件名保存
SimpleDateFormat dateFormatter=new SimpleDateFormat("yyyymmddhhmmss");//进行格式规范
String s_nowtime=dateFormatter.format(new Date());//当前时间
pic=s_nowtime+".jpg";//当前时间+附件名扩展名
//System.out.println(pic);
//进行复制
FileInputStream fis = new FileInputStream(new File(picPath));
FileOutputStream fos = new FileOutputStream(new File("images\\" +pic));
int ia;
while ((ia = fis.read()) != -1)
fos.write(ia);
fis.close();
fos.close();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"复制文件出错!","警告",JOptionPane.WARNING_MESSAGE);
ex.printStackTrace();
}
}
try{
connDB.executeNotQuery("Update Book set 姓名='"+name+"',电话='"+tel+"',手机='"+mobile
+"',QQ='"+qq+"',Email='"+email+"',Picture='"+pic+"',Sex='"+sex+"',分组='"+group+"' where Number="+num);//执行sql语句
JOptionPane.showMessageDialog(null, "修改信息成功!");
dispose();
}
catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,"修改信息出错","警告",JOptionPane.WARNING_MESSAGE);
}
}//if
}//savePerformed
public void prePerformed()
{//"上一条"
try
{
if (rs.isFirst())//如果指针已经 指向第一行了
preButton.setEnabled(false);//"上一条"按钮不被激活
else
{
nextButton.setEnabled(true);
preButton.setEnabled(true);
}
if(rs.previous())
{
num=rs.getInt("Number");
nameTextField.setText(rs.getString("姓名"));//获取字符集的字段
telTextField.setText(rs.getString("电话"));
mobTextField.setText(rs.getString("手机"));
qqTextField.setText(rs.getString("QQ"));
emaTextField.setText(rs.getString("Email"));
sexCombo.setSelectedIndex(rs.getInt("sex"));
groCombo.setSelectedItem(rs.getString("分组"));
String pict="Images//"+rs.getString("Picture");
picLabel.setIcon(new ImageIcon(pict));//设置图像
pathTextField.setText(pict);
}
if (rs.isFirst())
preButton.setEnabled(false);///"上一条"按钮不被激活
}
catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,"上一条数据出错!","警告",JOptionPane.WARNING_MESSAGE);
}
}
public void nextPerformed()
{//下一条
try{
if (rs.isLast())//如果指针已经 指向最后一行了
nextButton.setEnabled(false);//"下一条"按钮不被激活
else
{
nextButton.setEnabled(true);
preButton.setEnabled(true);
}
if(rs.next())
{
num=rs.getInt("Number");
nameTextField.setText(rs.getString("姓名"));//获取字符集的字段
telTextField.setText(rs.getString("电话"));
mobTextField.setText(rs.getString("手机"));
qqTextField.setText(rs.getString("QQ"));
emaTextField.setText(rs.getString("Email"));
sexCombo.setSelectedIndex(rs.getInt("sex"));
groCombo.setSelectedItem(rs.getString("分组"));
String pict="Images//"+rs.getString("Picture");
picLabel.setIcon(new ImageIcon(pict));//设置图像
pathTextField.setText(pict);//
if (rs.isLast())
nextButton.setEnabled(false);
}
}
catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(null,"下一条数据库出错!","警告",JOptionPane.WARNING_MESSAGE);
}
}
public void picPerformed()
{//当按下选择图像的按钮时
int result = chooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION)
{
picPath = chooser.getSelectedFile().getPath();//获得图象路径,getName getPath
//GetPath返回new File(String str)这个里面的str,如果你用的是绝对路径,那么getPath和getAbsolutePath就会返回同样的值。
picLabel.setIcon(new ImageIcon(picPath));//显示图像
pathTextField.setText(picPath);//将路径写到文本框里
}
}
String item;
String key;
ConnDB connDB=new ConnDB();//连接数据库
ResultSet rs;
int num;
JPanel panel= new JPanel();//面板
JComboBox sexCombo;//组合选框
JComboBox groCombo;
JLabel nameLabel=new JLabel();//标签
JLabel sexLabel=new JLabel();
JLabel telLabel=new JLabel();
JLabel mobLabel=new JLabel();
JLabel qqLabel=new JLabel();
JLabel emaLabel=new JLabel();
JLabel groLabel=new JLabel();
JTextField nameTextField= new JTextField();//文本域
JTextField telTextField=new JTextField();
JTextField mobTextField= new JTextField();
JTextField qqTextField=new JTextField();
JTextField emaTextField= new JTextField();
JButton saveButton=new JButton();//按钮
JButton nextButton=new JButton();
JButton preButton=new JButton();
JFileChooser chooser=new JFileChooser();//选择文件对话框
JLabel picLabel=new JLabel();//标签用来显示图像
JButton picButton=new JButton();//选择图象按钮
String picPath="";//图象路径名
JLabel pathLabel=new JLabel();
JTextField pathTextField=new JTextField();
}
class ChaDlgListener implements ActionListener
{//监听器
public ChaDlgListener(ChaDlg dlg)
{
this.dlg=dlg;
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==dlg.saveButton)//当按下的是"确定"按钮
dlg.savePerformed();
else if(event.getSource()==dlg.preButton)//当按下的是"上一条"按钮
dlg.prePerformed();
else if(event.getSource()==dlg.nextButton)//当按下的是"下一条"按钮
dlg.nextPerformed();
else if(event.getSource()==dlg.picButton)//当按下选择图像的按钮时
dlg.picPerformed();
}
ChaDlg dlg;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -