【Java】用Java实现简易通讯录界面

提示:java菜鸡的我,大家看看就行


提示:以下是本篇文章正文内容,下面案例可供参考

一、效果图

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、具体代码

两个类
在这里插入图片描述

1.引入库

PersonFrame类:

package cn.gdust2;

import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import java.util.Map.Entry;;



public class PersonFrame extends JFrame implements ActionListener  {
		 
	  private final String []sexs = new String []{"男","女"};
	  private final String [] relations = new String [] {"同事","亲戚","长辈","同学","发小"};
	  private Map < String,String > map;
	  private JPanel editPanel;
	  private JButton btnAdd = new JButton (" 添加");
	  private JButton btnDel = new JButton (" 删除");
	  private JButton btnUpdate = new JButton (" 修改");
	  private JButton btnSave = new JButton (" 保存");
	  private JButton btnSeek = new JButton (" 查询");
	  private JButton btnAll = new JButton (" 全部");
	  private JButton btnQuit = new JButton (" 退出");
	  private JTextField jtfName = new JTextField ();
	  private JComboBox jcbSex = new JComboBox (sexs);
	  private JTextField jtfQQ = new JTextField ();
	  private JTextField jtfEmail = new JTextField ();
	  private JTextField jtfAddress = new JTextField ();
	  private JTextField jtfWechat = new JTextField ();
	  private JTextField jtfTell = new JTextField ();
	  private JTextField jtfCondition = new JTextField (10);
	  private JComboBox jcbRelation = new JComboBox (relations);
	  private JComboBox jcbField = new JComboBox ();
	  private JTable tablelist = new JTable ();
	  
	  
	  //表头(列名)
	    private Object [] columnNames = {"姓名","性别"," 关系"," QQ"," 微信"," 联系电话"," 联系地址"};
	  //表格所有行数据
	    private Object [][] rowData;
	    public PersonFrame (){
	    super (" 通讯录管理程序");
	    setSize (600,480);
	    setLocation (100,100);
	    setResizable (false);
	    map = new HashMap < String,String > ();
	    map.put (" 姓名"," name");
	    Set <String> set = map.keySet ();
	    Iterator < String> e = set.iterator ();
	    while (e.hasNext()){
	     
	    	jcbField.addItem(e.next());    
	    }
	    
	    
	    Container container = this.getContentPane ();
	    container.setLayout (new BorderLayout ());
	    JPanel topPanel = new JPanel ();
	    container.add(topPanel,BorderLayout. NORTH);
	    topPanel.setLayout(new FlowLayout (FlowLayout. CENTER));
	    topPanel.add(new JLabel (" 查询方式"));
	    topPanel.add(jcbField);
	    topPanel.add(jtfCondition);
	    topPanel.add(btnSeek);
	    topPanel.add(btnAll);
	    topPanel.add(btnQuit);
	    editPanel = new JPanel ();
	    editPanel.setBounds (0,0,100,300);
	    container.add(editPanel,BorderLayout. CENTER);
	    editPanel.setLayout (null);
	    //第一行
	    JLabel lblName = new JLabel (" 姓名:");
	    lblName.setBounds (40,10,60,25);
	    editPanel.add(lblName);
	    jtfName.setBounds (80,10,160,25);
	    editPanel.add (jtfName);
	    JLabel lblSex = new JLabel (" 性别:");
	    lblSex.setBounds (270,10,60,25);
	    editPanel.add (lblSex);
	    jcbSex.setBounds (320,10,40,25);
	    editPanel.add(jcbSex);
	    JLabel lblRelation = new JLabel (" 关系:");
	    lblRelation.setBounds (380,10,60,25);
	    editPanel.add (lblRelation);
	    jcbRelation.setBounds (420,10,80,25);
	    editPanel.add (jcbRelation);
	    //第二行
	    JLabel lblQQ = new JLabel (" QQ:");
	    lblQQ. setBounds (40,40,60,25);
	    editPanel. add (lblQQ);
	    jtfQQ. setBounds (80,40,160,25);
	    editPanel. add (jtfQQ);
	    JLabel lblWechat = new JLabel (" 微信:");
	    lblWechat. setBounds (270,40,60,25);
	    editPanel. add (lblWechat);
	    jtfWechat. setBounds (320,40,160,25);
	    editPanel. add (jtfWechat);
	    //第三行
	    JLabel lblTell = new JLabel (" 联系电话:");
	    lblTell. setBounds (20,70,80,25);
	    editPanel. add (lblTell);
	    jtfTell. setBounds (80,70,160,25);
	    editPanel. add (jtfTell);
	    JLabel lblEmail = new JLabel (" 电子邮箱:");
	    lblEmail. setBounds (250,70,80,25);
	    editPanel. add (lblEmail);
	    jtfEmail. setBounds (320,70,160,25);
	    editPanel. add (jtfEmail);
	    //第四行
	    JLabel lblAddress = new JLabel (" 联系地址:");
	    lblAddress. setBounds (20,100,80,25);
	    editPanel. add (lblAddress);
	    jtfAddress. setBounds (80,100,400,25);
	    editPanel. add (jtfAddress);
	    JPanel bottomPanel = new JPanel ();
	    bottomPanel. setPreferredSize (new Dimension (0,280));
	    container. add (bottomPanel,BorderLayout. SOUTH);
	    bottomPanel. setLayout (new BorderLayout ());
	    JPanel tablePanel = new JPanel ();
	    bottomPanel. add (tablePanel,BorderLayout. NORTH);
	    JPanel toolPanel = new JPanel ();
	    bottomPanel. add (toolPanel,BorderLayout. SOUTH);
	    rowData = new Object [1][columnNames.length];
	  
	    
	    //创建一个表格,指定所有行数据和表头
	    tablelist = new JTable (rowData,columnNames);
	    tablePanel.add(tablelist.getTableHeader());
	    tablePanel.add(tablelist);
	    toolPanel.add(btnAdd);
	    toolPanel.add (btnUpdate);
	    toolPanel.add(btnSave);
	    toolPanel.add(btnDel);
	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	    setVisible(true);
	    setEditabled(false);
	    btnAdd.addActionListener(this);
	    btnSave.addActionListener(this);
	    btnDel.addActionListener(this);
	    btnUpdate.addActionListener(this);   
	    btnSeek.addActionListener(this);
	    btnAll.addActionListener(this);
	    btnQuit.addActionListener(this);
	    this. addWindowListener(new WindowAdapter(){
	      public void JFClose(WindowEvent w){
	        System.exit (0); 
	        } 
	      });
	    }

	  //设置编辑状态
	    private void setEditabled(boolean editabled){
	      jtfName.setEditable(editabled);
	      jtfQQ.setEditable(editabled);
	      jtfEmail.setEditable(editabled);
	      jtfWechat.setEditable(editabled);
	      jtfAddress.setEditable(editabled);
	      jtfTell.setEditable(editabled);
	      jcbSex.setEditable(editabled);
	      jcbRelation.setEditable(editabled);     
	      }
	    
	  //事件代码 完成各个按钮功能事务代码
	    
	    @ Override
	    public void actionPerformed (ActionEvent e){
	      if (e. getSource () == btnAdd){
	      }else if (e.getSource () == btnDel){
	      }else if (e.getSource () == btnUpdate){
	      }else if (e.getSource () == btnSave){
	      }else if (e.getSource () == btnSeek){
	      }else if (e.getSource () == btnAll){
	    	 
	      }else if (e.getSource () == btnQuit){
	        dispose();       
	      }
	    }
	    
	    
	    
	    

	

	public static void main(String[] args) {
		new PersonFrame();
	}

}

DBConnect类

package cn.gdust2;

import java.sql.*;
import java.util.*;
import java.util.Map.Entry;;

public class DBConnect {
	
	private final String driver="com.mysql.cj.jdbc.Driver";
	private final String url="jdbc:mysql://127.0.0.1:3306/addresslist?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
	private final String username="root";
	private final String password="123456";
    public Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    
   //构造方法
    public DBConnect( ) throws ClassNotFoundException,SQLException{
    	 Class.forName(driver);
    	 conn = DriverManager.getConnection(url, username, password);
    	 
    }
    
    //执行查询
    
    public ArrayList<Map<String, String>> select(String tablename,ArrayList<String>selectFields,String condition ){
		ArrayList<Map<String, String>>list=new ArrayList<Map<String,String>>();
		String fields,tempFields="";
		for (int i = 0; i < selectFields.size(); i++) {
			tempFields = tempFields+selectFields.get(i) +",";
			fields = tempFields.substring(0, tempFields.length() -2);
			String sql = "selct" +fields + "from" + tablename + ""+ condition;
			try {
				stmt=conn.createStatement();
				rs= stmt.executeQuery(sql);
				while (rs.next()) {
					Map<String, String>map = new HashMap<String, String>();
					map.put("message_type", rs.getString("message_type"));
					map.put("message_content", rs.getString("message_content"));
					list.add(map);
				}
				
			}catch (SQLException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
	
		}
		return list;
    	
      }
    
    
    
    //添加数据
    public boolean insert (String tablename,HashMap<Object,Object>map){  
    	boolean flag = false; 
    	String sql = ""; 
    	String fields = "",tempFields = "";
    	String values = "",tempValues = ""; 
    	
    	Iterator <Entry <Object,Object > >keys = map.entrySet().iterator();
    	for (int i =0;i < map.size();i++){    
    		Entry<Object,Object> entry = keys.next(); 
    		Object key = entry. getKey();  
    		Object value = entry.getValue();     
    		tempFields += key+" ',";
    		tempValues += " '" + value + " '" + ",";
    	   }
    	
    	 fields = tempFields. substring (0,tempFields. length () -2);
    	 values = tempValues. substring (0,tempValues. length () -2);
    	 sql += " insert into" + tablename + " (" + fields + ") values" + "(" + values + ")";
    	  try {
    	    stmt = conn. createStatement ();
    	    stmt. execute (sql);
    	    flag = true;
    	   }catch (SQLException e){
    	    e. printStackTrace ();
    	      }
    	  return flag;
    	}
    
    
    	//更新数据
    	public boolean update (String tablename,HashMap < Object,Object > map, String condition){
    	  boolean flag = false;
    	  String values = "";
    	  Iterator <Entry <Object,Object >>keys = map.entrySet ().iterator();
    	  
    	  for(int i =0;i < map. size ();i++ ){
    	    Entry < Object,Object > entry = keys. next ();
    	    Object key = entry. getKey ();
    	    Object value = entry. getValue ();
    	    values += key + " = '" + value + " ',";
    	}
    	  String updateValues = values.substring (0,values. length () -2);
    	  String sql = " update" + tablename + " set" + updateValues +"" +condition;
    	  try {
    	    stmt = conn. createStatement ();
    	    stmt. executeUpdate (sql);
    	    flag = true;
    	}catch (SQLException e){
    	    e. printStackTrace ();
    	}
    	  return flag;
    	}
    	
    	
    	
    	//删除数据
    	public boolean delete (String tablename,String condition){
    	  boolean flag = false;
    	  String sql = " delete from" + tablename + "" + condition;
    	  try {
    		  stmt = conn. createStatement ();
    		  stmt. executeUpdate (sql);
    		  flag = true;
    		}catch (SQLException e){
    		  e. printStackTrace ();
    		}
    		  return flag;
    		}
    	
    	
    	
    	//关闭数据连接
    	public void close ()throws SQLException {
    		    stmt. close ();
    		    conn. close ();
    		}
    	
    	

    
}
    	



总结

一个简单的Java的GUI界面,具体的链接数据库显示没写,需要实现可以去修改DBConnect类和主方法里面。
觉得复制麻烦可以点击下载

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值