实例介绍
【实例简介】基于XML的课程设计,可以运行,通讯录,添加修改信息等
【实例截图】
【核心代码】
package xml; import java.awt.event.*; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import javax.xml.parsers.*; import java.io.*; import org.w3c.dom.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; @SuppressWarnings("serial") public class AddressList extends JFrame implements ActionListener{ private AddressList mainFrame=this; JButton addRecord = new JButton("添加"); JButton lookup = new JButton("查找"); JButton delete = new JButton("�h除"); JButton change = new JButton("修改"); JButton showAllResult = new JButton("所有"); JTextField qq = new JTextField(8); JTextField name = new JTextField(8); Object[] sex = {"男", "女"}; JComboBox<Object> gender = new JComboBox<Object>(sex); JTextField age = new JTextField(8); JTextField address = new JTextField(15); JTextField phone = new JTextField(10); JLabel[] empty = new JLabel[10]; int ColLenght = 125; int width = 700; int height = 530; Object[] columnNames = {"姓名", "性别","QQ", "年龄", "地址", "联系电话"}; Object[][] studentInfo = new Object[ColLenght][6]; JTable table = new JTable(studentInfo, columnNames); JFrame find=new Find(); JFrame verify=new Change(); Document doc; public AddressList(){ setTitle("通讯录"); setSize(width, height); setVisible(true); setResizable(false); setLocationRelativeTo(null);//将框架至于屏幕中间 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /////////////////////////////// //修改背景图片,图片大小最好为 width*height像素 JLabel label = new JLabel(new ImageIcon("Img/22.jpg"));// 把背景图片显示在一个标签里面 label.setBounds(0, 0, width, height); ((JPanel) this.getContentPane()).setOpaque(false); this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); ///////////////////////////////////////////// setLayout(new BorderLayout()); JPanel p2=new JPanel(); p2.setOpaque(false); p2.setLayout(new GridLayout(0, 1, 0, 20)); for(int i = 0; i < 2; i ){ empty[i] = new JLabel(); p2.add(empty[i]); } //修改按钮颜色 lookup.setBackground(Color.green); delete.setBackground(Color.green); addRecord.setBackground(Color.green); change.setBackground(Color.green); showAllResult.setBackground(Color.green); p2.add(lookup); p2.add(delete); p2.add(addRecord); p2.add(change); p2.add(showAllResult); for(int i = 0; i < 4; i ){ empty[i] = new JLabel(); p2.add(empty[i]); } this.add(p2, BorderLayout.EAST); JPanel p3=new JPanel(); p3.setOpaque(false); p3.add("Center", new JScrollPane(table)); this.add(p3, BorderLayout.CENTER); validate(); addRecord.addActionListener(this); lookup.addActionListener(this); delete.addActionListener(this); change.addActionListener(this); showAllResult.addActionListener(this); //为表格添加单击事件 匿名类实现 table.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ name.setText((String)studentInfo[table.getSelectedRow()][0]); System.out.println(name.getText()); if(((String)studentInfo[table.getSelectedRow()][1]).equals("男"))//判断是男还是女 gender.setSelectedIndex(0); else gender.setSelectedIndex(1); qq.setText((String)studentInfo[table.getSelectedRow()][2]); age.setText((String)studentInfo[table.getSelectedRow()][3]); address.setText((String)studentInfo[table.getSelectedRow()][4]); phone.setText((String)studentInfo[table.getSelectedRow()][5]); } }); init();//初始化表格 } public static void main(String[] args){ new AddressList(); } File xmlFile = null; public Document getDocument()throws Exception{ xmlFile = new File("src/data.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(xmlFile); return doc; } public void init(){//初始化表格 for(int i = 0; i < table.getRowCount(); i ){ studentInfo[i][0] = ""; studentInfo[i][1] = ""; studentInfo[i][2] = ""; studentInfo[i][3] = ""; studentInfo[i][4] = ""; studentInfo[i][5] = ""; } try{ doc = getDocument(); Element root = doc.getDocumentElement(); NodeList names = root.getElementsByTagName("name"); NodeList sexes = root.getElementsByTagName("sex"); NodeList qqs = root.getElementsByTagName("qq"); NodeList ages = root.getElementsByTagName("age"); NodeList addresses = root.getElementsByTagName("address"); NodeList phones = root.getElementsByTagName("phone"); for(int i = 0; i < names.getLength() && i < ColLenght; i ){ studentInfo[i][0] = names.item(i).getTextContent(); studentInfo[i][1] = sexes.item(i).getTextContent(); studentInfo[i][2] = qqs.item(i).getTextContent(); studentInfo[i][3] = ages.item(i).getTextContent(); studentInfo[i][4] = addresses.item(i).getTextContent(); studentInfo[i][5] = phones.item(i).getTextContent(); } repaint(); } catch(Exception e){ e.printStackTrace(); } } public void actionPerformed(ActionEvent e){ if(addRecord == e.getSource()){ new AddAndChange(); } if(delete == e.getSource()){ try { System.out.println(table.getSelectedRow()); Element root = doc.getDocumentElement(); root.removeChild(root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode()); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource newDomSource = new DOMSource(root); transformer.transform(newDomSource,new StreamResult(new FileOutputStream(xmlFile))); init(); } catch(Exception e9){ e9.printStackTrace(); } } if(lookup == e.getSource()){ find.setVisible(true); } if(showAllResult == e.getSource()){ init(); } if(change == e.getSource()){ verify.setVisible(true); } } public Node makeupPeopleNode(Document doc,String n,String s,String q,String a,String ad,String p){ Element people2 = doc.createElement("people"); try{ Element name2 = doc.createElement("name"); Element sex2 = doc.createElement("sex"); Element qq2 = doc.createElement("qq"); Element age2 = doc.createElement("age"); Element address2 = doc.createElement("address"); Element phone2 = doc.createElement("phone"); name2.setTextContent(n); sex2.setTextContent(s); qq2.setTextContent(q); age2.setTextContent(a); address2.setTextContent(ad); phone2.setTextContent(p); people2.appendChild(name2); people2.appendChild(sex2); people2.appendChild(qq2); people2.appendChild(age2); people2.appendChild(address2); people2.appendChild(phone2); } catch(Exception e){ e.printStackTrace(); } return people2; } private class Find extends JFrame{ JTextField name = new JTextField(8); JButton chzhao = new JButton("查找"); public Find() { setTitle("查找"); setSize(200, 120); setResizable(false); setLocationRelativeTo(null);//将框架至于屏幕中间 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); /////////////////////////////// JLabel label = new JLabel(new ImageIcon("Img/find.jpg"));// 把背景图片显示在一个标签里面 label.setBounds(0, 0, 200, 120); ((JPanel) this.getContentPane()).setOpaque(false); this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); ///////////////////////////////////////////// setLayout(new BorderLayout()); JPanel panel1=new JPanel(); JPanel panel2=new JPanel(); panel1.setOpaque(false); panel2.setOpaque(false); name.setBorder(BorderFactory.createTitledBorder("姓名")); panel1.add(name); panel2.add(chzhao); add(panel1,BorderLayout.NORTH); add(panel2,BorderLayout.SOUTH); chzhao.setBackground(Color.green); chzhao.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(chzhao == e.getSource()){ String lookupName = name.getText(); try{ for(int i = 0; i < table.getRowCount(); i ){ studentInfo[i][0] = ""; studentInfo[i][1] = ""; studentInfo[i][2] = ""; studentInfo[i][3] = ""; studentInfo[i][4] = ""; studentInfo[i][5] = ""; } doc = getDocument(); Element root = doc.getDocumentElement(); NodeList names = root.getElementsByTagName("name"); NodeList sexes = root.getElementsByTagName("sex"); NodeList qqs = root.getElementsByTagName("qq"); NodeList ages = root.getElementsByTagName("age"); NodeList addresses = root.getElementsByTagName("address"); NodeList phones = root.getElementsByTagName("phone"); int index=0; for(int i = 0; i < names.getLength(); i ){ if(names.item(i).getTextContent().indexOf(lookupName) != -1){ studentInfo[index][0] = names.item(i).getTextContent(); studentInfo[index][1] = sexes.item(i).getTextContent(); studentInfo[index][2] = qqs.item(i).getTextContent(); studentInfo[index][3] = ages.item(i).getTextContent(); studentInfo[index][4] = addresses.item(i).getTextContent(); studentInfo[index][5] = phones.item(i).getTextContent(); index ; } } mainFrame.repaint(); } catch(Exception e8){ e8.printStackTrace(); } } } }); } } private class Change extends JFrame{ JButton changeRecord = new JButton("保存"); public Change() { setTitle("修改"); setSize(560, 150); setResizable(false); setLocationRelativeTo(null);//将框架至于屏幕中间 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); /////////////////////////////// JLabel label = new JLabel(new ImageIcon("Img/change.jpg"));// 把背景图片显示在一个标签里面 label.setBounds(0, 0, 560, 150); ((JPanel) this.getContentPane()).setOpaque(false); this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); ///////////////////////////////////////////// changeRecord.setBackground(Color.green); qq.setBorder(BorderFactory.createTitledBorder("QQ")); name.setBorder(BorderFactory.createTitledBorder("姓名")); gender.setBorder(BorderFactory.createTitledBorder("性别")); age.setBorder(BorderFactory.createTitledBorder("年龄")); address.setBorder(BorderFactory.createTitledBorder("地址")); phone.setBorder(BorderFactory.createTitledBorder("电话号码")); setLayout(new BorderLayout()); JPanel p = new JPanel(); p.setOpaque(false); p.setLayout(new GridLayout(1,0,0,20)); p.add(name); p.add(gender); p.add(age); p.add(address); p.add(phone); p.add(qq); add(p,BorderLayout.NORTH); JPanel p1 = new JPanel(); p1.setOpaque(false); p1.add(changeRecord); add(p1,BorderLayout.SOUTH); changeRecord.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String n="",s="",q="",a="",ad="",p=""; try{n=name.getText();}catch(Exception e2){n="";} try{s=(String)(gender.getSelectedItem());}catch(Exception e3){s="";} try{q=qq.getText();}catch(Exception e4){q="";} try{a=age.getText();}catch(Exception e5){a="";} try{ad=address.getText();}catch(Exception e6){ad="";} try{p=phone.getText();}catch(Exception e7){p="";} try{ Element root = doc.getDocumentElement(); //System.out.println(root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode().getTextContent()); root.replaceChild(makeupPeopleNode(doc,n,s,q,a,ad,p),root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode()); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource newDomSource = new DOMSource(root); transformer.transform(newDomSource,new StreamResult(new FileOutputStream(xmlFile))); init(); } catch(Exception e8) { System.out.println("异常信息5:" e8); } } }); try { doc = getDocument(); } catch (Exception e) { e.printStackTrace(); } } } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论