package xml;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.tree.*;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXValidator;
import org.dom4j.io.XMLWriter;
import org.dom4j.util.XMLErrorHandler;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import javax.swing.border.*;
import javax.swing.plaf.*;
import javax.swing.plaf.basic.*;
import javax.swing.plaf.metal.*;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class MainWindow extends JFrame implements ActionListener,
TreeSelectionListener, TreeModelListener {
JMenuBar menuBar;
JMenu menu1, menu2, menu3, menu4, m31, m32, m11, m12;
JMenuItem m13, m14;
JMenuItem m21, m22, m23;
JMenuItem m33;
/**
* 3级子菜单
*/
JMenuItem m111, m112, m121, m122, m311, m312, m313, m314, m315, m316, m317,
m321, m322;
JMenuItem m41, m42;// 菜单定义部分
JToolBar toolBar;
JButton b1, b2, b3;
/**
* 设置字体大小
*/
JButton b4, b5, b6, b7, b8;
int i = 20;
public static JTextArea tt;
JScrollPane jsp;
JScrollPane jsp1;
/**
* 设置字体风格
*/
/**
* 构建Socket
*
*/
Socket sock;
JTextField txtSendMsg;
JTextArea txtMsg;
DataOutputStream out;// 构建数据输入输出流
DataInputStream in;
boolean canWaiter = true;
Waiter waiter;
/**
* xml树
*
*
*
*
*/
public static JMenuItem allClear, addn, addt, dele, addatt;
JPanel p, p_1, p_2, ptext, pview, popupPane, pinput;
JSplitPane split;
public static JTextArea text;
JScrollPane scrollpane_1, scrollpane_2, scrollpane_3;
public static JTree jtree;
public static DefaultTreeModel treeModel = null;
public static DefaultMutableTreeNode root, xmlfile;
JTabbedPane jTabbedPanel, tabbedPanel;
public static JPopupMenu popupMenu;
public static String openFileName = "";
// ------------------------------------------------------------------------------
public MainWindow() {
createMenu();
// createText();
createMainPane();
createToolBar();
/**
* 构建客户端Socket
*/
b1.setEnabled(true);
b2.setEnabled(false);
b3.setEnabled(false);
txtSendMsg.setEditable(false);
txtMsg.setEditable(false);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
try {
disconnect();
} catch (Exception e1) {
}
dispose();
System.exit(0);
}
});
// -------------------------------------------------------------------------
setTitle("XML Online Editor");
setIconImage((new ImageIcon("logo.gif")).getImage());
setSize(800, 600);
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((size.width - getWidth()) / 2,
(size.height - getHeight()) / 2);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private void createMenu() {
menuBar = new JMenuBar();
menu1 = new JMenu("文件(F)");
menu1.setMnemonic('F');// 设置热键
m11 = new JMenu("新建");
m111 = new JMenuItem("txt");
m112 = new JMenuItem("xml");
m11.add(m111);
m11.add(m112);
m12 = new JMenu("保存");
m121 = new JMenuItem("txt");
m122 = new JMenuItem("xml");
m12.add(m121);
m12.add(m122);
m14 = new JMenuItem("打开");
m13 = new JMenuItem("退出(X)");
m13.setAccelerator(KeyStroke.getKeyStroke('X', 2));
menu1.add(m11);
menu1.add(m12);
menu1.add(m14);
menu1.addSeparator();// 分割线
menu1.add(m13);
menu2 = new JMenu("编辑(E)");
menu2.setMnemonic('E');
m21 = new JMenuItem("复制");
m22 = new JMenuItem("粘贴");
m23 = new JMenuItem("剪切");
menu2.add(m21);
menu2.add(m22);
menu2.add(m23);
menu3 = new JMenu("格式(O)");
menu3.setMnemonic('O');
m31 = new JMenu("字体");
/**
*
*
* 字体
*/
m311 = new JMenuItem("宋体");
m312 = new JMenuItem("黑体");
m313 = new JMenuItem("楷体");
m314 = new JMenuItem("Arial");
m315 = new JMenuItem("Courier");
m316 = new JMenuItem("TimesRoman");
m317 = new JMenuItem("Helvetica");
m32 = new JMenu("自动换行");
m321 = new JMenuItem("是");
m322 = new JMenuItem("否");
m33 = new JMenuItem("背景");
menu3.add(m31);
/**
*
*/
m31.add(m311);
m31.add(m312);
m31.add(m313);
m31.add(m314);
m31.add(m315);
m31.add(m316);
m31.add(m317);
menu3.add(m32);
m32.add(m321);
m32.add(m322);
menu3.add(m33);
menu4 = new JMenu("帮助(H)");
menu4.setMnemonic('H');
m41 = new JMenuItem("使用帮助");
m42 = new JMenuItem("关于");
menu4.add(m41);
menu4.addSeparator();
menu4.add(m42);
m11.addActionListener(this);
m111.addActionListener(this);
m112.addActionListener(this);
m12.addActionListener(this);
m121.addActionListener(this);
m122.addActionListener(this);
m13.addActionListener(this);
m14.addActionListener(this);
m21.addActionListener(this);
m22.addActionListener(this);
m23.addActionListener(this);
m31.addActionListener(this);
/**
*
*/
m311.addActionListener(this);
m312.addActionListener(this);
m313.addActionListener(this);
m314.addActionListener(this);
m315.addActionListener(this);
m316.addActionListener(this);
m317.addActionListener(this);
m32.addActionListener(this);
m321.addActionListener(this);
m322.addActionListener(this);
m33.addActionListener(this);
m41.addActionListener(this);
m42.addActionListener(this);
menuBar.add(menu1);
menuBar.add(menu2);
menuBar.add(menu3);
menuBar.add(menu4);
this.setJMenuBar(menuBar);
// -----------------------
m13.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
root.removeAllChildren();
xmlfile.removeAllChildren();
treeModel.insertNodeInto(xmlfile, root, root.getChildCount());
treeModel.reload();
jtree.scrollPathToVisible(new TreePath(root.getPath()));
tt.setText("");
MainWindow.openFileName = "";
}
});
}
private void createToolBar() {
// 设置Socket信息显示框
txtMsg = new JTextArea(4, 5);
jsp1 = new JScrollPane(txtMsg);
/*
* jsp1.setHorizontalScrollBarPolicy(JScrollPane.
* HORIZONTAL_SCROLLBAR_AS_NEEDED);
* jsp1.setVerticalScrollBarPolicy(JScrollPane
* .VERTICAL_SCROLLBAR_AS_NEEDED);
* jsp1.setHorizontalScrollBarPolicy(JScrollPane
* .HORIZONTAL_SCROLLBAR_ALWAYS);
* jsp1.setVerticalScrollBarPolicy(JScrollPane
* .VERTICAL_SCROLLBAR_ALWAYS);
*/
// ----------------------------------------------------------------------
toolBar = new JToolBar();
b1 = new JButton();
b1.setToolTipText("连接服务器");
b1.addActionListener(this);
b1.setIcon(new ImageIcon("logo1.gif"));
b2 = new JButton();
b2.setToolTipText("断开服务器");
b2.addAc
评论3
最新资源