基于java利用JDOM读取XML文件实现简单留言簿程序

JDOM.java
package Ex_5;

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

@SuppressWarnings("unused")
public class JDOM {
	private Document docwriter,docreader;
	static private Element root = new Element("留言列表");
	private Element rootReader;
	public Element getRoot(){
		return this.rootReader;
	}
	public Document getDoc(){
		return this.docreader;
	}
	private SAXBuilder builder;
	public JDOM() throws Exception{
		builder = new SAXBuilder();
		docwriter = new Document();
		docwriter.setRootElement(root);
		
	}
	public void JDOMWriter() throws Exception{
		JDOMReader();
		List<?> list = rootReader.getChildren();
		int size = list.size();
		if(size>0)
		{
			for(int i = 0;i<list.size();i++){
				String []data = new String[5];
				Element message = (Element)list.get(i);
				data[0] = message.getAttributeValue("编号");
				data[1] = ((Element)message.getChildren().get(0)).getValue();
				data[2] = ((Element)message.getChildren().get(1)).getValue();
				data[3] = ((Element)message.getChildren().get(2)).getValue();
				data[4] = ((Element)message.getChildren().get(3)).getValue();
				addData(data[0],data[1],data[2],data[3],data[4]);
				//Form.tableModel.addRow(data);
			}
			return;
		}
//		Element stu = new Element("留言");
//		stu.setAttribute("编号", "1");
//		Element title = new Element("标题");
//		title.addContent("今晚有约");
//		stu.addContent(title);
//		Element date = new Element("日期");
//		date.addContent("2009-08-09");
//		stu.addContent(date);
//		Element name = new Element("留言人");
//		name.addContent("张军");
//		stu.addContent(name);
//		Element content = new Element("内容");
//		content.addContent("到电影院看电影");
//		stu.addContent(content);
//		root.addContent(stu);
		
//		Element stu2 = new Element("留言");
//		stu2.setAttribute("编号", "2");
//		Element title2 = new Element("标题");
//		title2.addContent("家庭作业");
//		stu2.addContent(title2);
//		Element date2 = new Element("日期");
//		date2.addContent("2009-08-10");
//		stu2.addContent(date2);
//		Element name2 = new Element("留言人");
//		name2.addContent("张军");
//		stu2.addContent(name2);
//		Element content2 = new Element("内容");
//		content2.addContent("编程实现一个留言管理系统。增加、修改、删除、查阅留言功能");
//		stu2.addContent(content2);
//		root.addContent(stu2);
//		XMLOutputter outputter = new XMLOutputter();
//		Format format = outputter.getFormat();
//		format.setEncoding("GB2312");
//		format.setIndent("  ");
//		outputter.setFormat(format);
//		outputter.output(docwriter, new FileWriter(".\\myxml.xml"));
	}
	public void JDOMReader() throws Exception{
		docreader = builder.build(".\\myxml.xml");
		rootReader = docreader.getRootElement();
	}
	
	public void delData(String id) throws Exception
	{
		JDOMReader();
		List<?> list1 = rootReader.getChildren();
		for(int i = 0;i<list1.size();i++)
		{
			int tmp = Integer.parseInt(id);
			System.out.println(tmp);
			Element message = (Element)list1.get(i);
			if(message.getAttributeValue("编号").equals(id))
			{
				System.out.println(message.getValue());
				rootReader.removeContent(message);
			}
		}
		XMLOutputter outputter = new XMLOutputter();
		Format format = outputter.getFormat();
		format.setEncoding("GB2312");
		format.setIndent("  ");
		outputter.setFormat(format);
		outputter.output(docreader, new FileWriter(".\\myxml.xml"));
	}
	public void addData(String id,String title,String date,String name,String content) throws Exception{
		Element stu = new Element("留言");
		stu.setAttribute("编号", id);
		Element title1 = new Element("标题");
		title1.addContent(title);
		stu.addContent(title1);
		Element date1 = new Element("日期");
		date1.addContent(date);
		stu.addContent(date1);
		Element name1 = new Element("留言人");
		name1.addContent(name);
		stu.addContent(name1);
		Element content1 = new Element("内容");
		content1.addContent(content);
		stu.addContent(content1);
		root.addContent(stu);
		XMLOutputter outputter = new XMLOutputter();
		Format format = outputter.getFormat();
		format.setEncoding("GB2312");
		format.setIndent("  ");
		outputter.setFormat(format);
		outputter.output(docwriter, new FileWriter(".\\myxml.xml"));
	}
	public void selectData(int i){
		switch(i)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		default:
			break;
		}
	}
}

Form.java
package Ex_5;
import java.awt.Color;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
@SuppressWarnings({ "unused", "serial" })
public class Form extends JFrame{
	private static final int DISPOSE_ON_CLOSE = 0;
	private JFrame f;
	private JScrollPane tablePanel;
	private JLabel person,title,content,date;
	private JTextField perTxt,titleTxt,contentTxt,dateTxt;
	private JButton addBtn,delBtn,updBtn,selBtn;
	static public JTable table;
	static public DefaultTableModel tableModel;
	private JDOM jdom;
	static public int i = 1;
	private List<?> list;
	public void addListener() {
		// TODO Auto-generated method stub
		selBtn.addMouseListener(new MouseListener(){

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				try {
					select();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}});
		addBtn.addMouseListener(new MouseListener(){

			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				try {
					jdom.JDOMReader();
				} catch (Exception e3) {
					// TODO Auto-generated catch block
					e3.printStackTrace();
				}
				list = jdom.getRoot().getChildren();
				int id = list.size()+1;
				try {
					jdom.addData(String.valueOf(id), titleTxt.getText(), dateTxt.getText(), perTxt.getText(), contentTxt.getText());
				} catch (Exception e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
				try {
					update();
				} catch (Exception e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				perTxt.setText("");
				titleTxt.setText("");
				contentTxt.setText("");
			}
			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}});
		
		updBtn.addMouseListener(new MouseListener(){

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				tableModel.setRowCount(0);
				try {
					update();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}});
		table.addMouseListener(new MouseListener(){

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				int row = table.getSelectedRow();
				if(row>=0)
				{
					String str0 = table.getValueAt(row, 0).toString(); 
					String str1 = table.getValueAt(row, 1).toString(); 
					String str2 = table.getValueAt(row, 2).toString();
					String str3 = table.getValueAt(row, 3).toString(); 
					String str4 = table.getValueAt(row, 4).toString();
					perTxt.setText(str3);
					titleTxt.setText(str1);
					contentTxt.setText(str4);
				}
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}});
		delBtn.addMouseListener(new MouseListener(){

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				int sel = table.getSelectedRow();
				//int sel = table.getSelectedColumn();
				TableColumnModel tcm = table.getColumnModel();
				try {
					jdom.JDOMReader();
					list = jdom.getRoot().getChildren();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				if(list.size()>0 && sel>=0)
				{
					String first = (String) tableModel.getValueAt(sel, 0);
					
					try {
						jdom.delData(first);
						//update();
						tableModel.removeRow(sel);
						//jdom.JDOMWriter();
						update();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					//((JTable) tcm).sizeColumnsToFit(-1);
					perTxt.setText("");
					//dateTxt.setText("");
					titleTxt.setText("");
					contentTxt.setText("");
				}
				else
				{return;}
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}});
	}
	public void update() throws Exception{
		tableModel.setRowCount(0);// 清除原有行
		//jdom.JDOMWriter();
		jdom.JDOMReader();
		list = jdom.getRoot().getChildren();
		for(int i = 0;i<list.size();i++){
			String []data = new String[5];
			Element message = (Element)list.get(i);
			data[0] = message.getAttributeValue("编号");
			data[1] = ((Element)message.getChildren().get(0)).getValue();
			data[2] = ((Element)message.getChildren().get(1)).getValue();
			data[3] = ((Element)message.getChildren().get(2)).getValue();
			data[4] = ((Element)message.getChildren().get(3)).getValue();
			tableModel.addRow(data);
		}
	}
	
	public void select() throws Exception{
		//tableModel.setRowCount(0);// 清除原有行
		//jdom.JDOMWriter();
		jdom.JDOMReader();
		list = jdom.getRoot().getChildren();
		tableModel.setRowCount(0);
		for(int i = 0;i<list.size();i++){
			String []data = new String[5];
			Element message = (Element)list.get(i);
			data[0] = message.getAttributeValue("编号");
			data[1] = ((Element)message.getChildren().get(0)).getValue();
			data[2] = ((Element)message.getChildren().get(1)).getValue();
			data[3] = ((Element)message.getChildren().get(2)).getValue();
			data[4] = ((Element)message.getChildren().get(3)).getValue();
			String _title = titleTxt.getText();
			String _name = perTxt.getText();
			String _content = contentTxt.getText();
			if((_title.equals(data[1]))||(_name.equals(data[3]))||(_content.equals(data[4])))
			{
				tableModel.addRow(data);
				perTxt.setText(data[3]);
				titleTxt.setText(data[1]);
				contentTxt.setText(data[4]);
			}
		}
	}
	//@SuppressWarnings("static-access")
	public void init() throws Exception {
		// TODO Auto-generated method stub
		f = new JFrame("留言信息综合查询系统");
		f.setLayout(null);
		f.setBackground(Color.BLUE);
		//f.setLocationRelativeTo(null);
		person = new JLabel("留言人");
		person.setBounds(64,14,52,14);
		perTxt = new JTextField();
		perTxt.setBounds(120, 13, 140, 20);
		title = new JLabel("标题");
		title.setBounds(270, 14, 40, 14);
		titleTxt = new JTextField();
		titleTxt.setBounds(315, 13, 210, 20);
		content = new JLabel("内容");
		content.setBounds(64, 50, 162, 14);
		contentTxt = new JTextField();
		contentTxt.setBounds(120, 48, 340, 20);
		addBtn = new JButton("增加");
		addBtn.setBounds(470, 46, 70, 25);
		delBtn = new JButton("删除");
		delBtn.setBounds(150, 320, 70, 25);
		updBtn = new JButton("更新");
		updBtn.setBounds(230, 320, 70, 25);
		date = new JLabel("日期");
		date.setBounds(310, 325, 50, 14);
		dateTxt = new JTextField();
		dateTxt.setBounds(340, 323, 140, 20);
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
		System.out.println(sdf.format(cal.getTime()));
		dateTxt.setText(sdf.format(cal.getTime()));
		dateTxt.setEditable(false);
		selBtn = new JButton("查询");
		selBtn.setBounds(490, 320, 70, 25);
		table = new JTable(new DefaultTableModel(new Object[][] { {
			"编号","标题","日期","留言人","内容"} },new String[]{"编号","标题","日期","留言人","内容"}));
		//table.addColumn(aColumn);
		//table.setBounds(20, 80, 555, 200);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选   
        table.setSelectionBackground(Color.YELLOW);  
        table.setSelectionForeground(Color.RED);
		tableModel = (DefaultTableModel) table.getModel();
		tablePanel = new JScrollPane(table);
		tablePanel.setBounds(20, 80, 555, 200);
		table.setFillsViewportHeight(true);
		tablePanel.setViewportView(table); //支持滚动
		update();
		
		f.add(person);
		f.add(perTxt);
		f.add(title);
		f.add(titleTxt);
		f.add(content);
		f.add(contentTxt);
		f.add(addBtn);
		f.add(delBtn);
		f.add(updBtn);
		f.add(date);
		f.add(dateTxt);
		f.add(selBtn);
		f.add(tablePanel);
		f.addWindowListener(new WindowListener(){

			@Override
			public void windowActivated(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void windowClosed(WindowEvent arg0) {
				// TODO Auto-generated method stub
				System.exit(0);
			}

			@Override
			public void windowClosing(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void windowDeactivated(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void windowDeiconified(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void windowIconified(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void windowOpened(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}});
		//this.setLocationRelativeTo(f); ///简单的居中
		f.setResizable(false);
		f.setSize(600, 400);
		f.setVisible(true);
	}
	public Form() throws Exception{
		jdom = new JDOM();
		this.setLocationRelativeTo(null);
		this.init();
		this.addListener();
		jdom.JDOMWriter();
	}
	
}

Test.java
package Ex_5;

public class Test {

	/**
	 * @param args
	 * @throws Exception 
	 */
	@SuppressWarnings("unused")
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Form form = new Form();
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值