⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chadlg.java

📁 一个典型的电子通讯录,自己制作的 1.采用JAVA图形用户界面(GUI)进行设计。 2.数据库采用Microsoft Access 2003。 欢迎来到我的主页http://hi.baidu.c
💻 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 + -