实例介绍
【实例简介】基于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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论