Board logo

标题: [JAVA源码]一个JAVA记事本源代码 初学者可参考 [打印本页]

作者: LOVE    时间: 2008-9-29 09:25     标题: [JAVA源码]一个JAVA记事本源代码 初学者可参考

[JAVA源码]一个JAVA记事本源代码 初学者可参考
[JAVA源码]一个JAVA记事本源代码 初学者可参考



QUOTE:

一个JAVA源代码 初学者可参考
--------下面是源程序...

package word;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.print.PrinterJob;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Vector;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.undo.UndoManager;

public class JavaWord {
    public static void main(String[] args) {
        JavaWord.start();
    }
    public static void start() {
        JFrame mainWindow = new MainWindow();
        //mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainWindow.setVisible(true);
    }
}
class MainWindow extends JFrame implements ActionListener, KeyListener,
        MouseListener, UndoableEditListener, WindowListener {
    JMenuBar menuBar;
    JMenu file, edit, see, database, face, help;
    JMenuItem new1, open, save, exit, redo, undo, cut, copy, paste, selectAll,
            newline, metal, motif, windows, helpContent, about, redoPopup,
            undoPopup, cutPopup, copyPopup, pastePopup, selectAllPopup,
            dConection, print, timeDate, find;
    ActionAbout dialog;
    JCheckBoxMenuItem toolBar;
    JToolBar bar;
    JTextArea text;
    JScrollPane scroll;
    MainWindow exitWindow;
    JFileChooser chooser;
    BufferedReader in;
    PrintWriter write;
    JButton bnew, bopen, bsave, bexit, bredo, bundo, bcut, bcopy, bpaste,
            bselectAll, bhelp, babout, bprint, bfind;
    String metalFace, motifFace, windowsFace;
    boolean textAction = false; // 定义记录文本区第一次按下的行为,实现窗口关闭时,提示用户保存文件
    UndoManager undoManger;// 定义出undo/ redo对象
    JPopupMenu textPopup;
    PrintRequestAttributeSet attributes;
    MainWindow() {
        setTitle("JAVA Word文档编辑器");
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setSize(700, 500);
        setLayout(new BorderLayout());
        // 设置窗口响应事件
        this.addWindowListener(this);
        text = new JTextArea();
        // text = new JTextPane();
        scroll = new JScrollPane(text);
        getContentPane().add(scroll, BorderLayout.CENTER);
        // 设置文本区响应事件
        text.addMouseListener(this);
        text.addKeyListener(this);
        // 设置菜单栏
        menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        // 设置文件菜单
        file = new JMenu("文件(F)");
        file.setMnemonic('F');
        menuBar.add(file);
        new1 = new JMenuItem("新建", new ImageIcon("ico/new16.gif"));
        new1.setHorizontalTextPosition(SwingConstants.RIGHT);
        new1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
                InputEvent.CTRL_MASK));
        open = new JMenuItem("打开", new ImageIcon("ico/open16.gif"));
        open.setHorizontalTextPosition(SwingConstants.RIGHT);
        open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
                InputEvent.CTRL_MASK));
        save = new JMenuItem("保存", new ImageIcon("ico/save16.gif"));
        save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
                InputEvent.CTRL_MASK));
        print = new JMenuItem("打印", new ImageIcon("ico/print16.gif"));
        print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
                InputEvent.CTRL_MASK));
        exit = new JMenuItem("退出", new ImageIcon("ico/exit.gif"));
        exit.setHorizontalTextPosition(SwingConstants.RIGHT);
        exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
                InputEvent.CTRL_MASK));
        file.add(new1);
        file.add(open);
        file.add(save);
        file.addSeparator();
        file.add(print);
        file.addSeparator();
        file.add(exit);
        // 增加文件菜单事件响应
        new1.addActionListener(this);
        open.addActionListener(this);
        save.addActionListener(this);
        print.addActionListener(this);
        exit.addActionListener(this);
        // 设置编辑菜单
        edit = new JMenu("编辑(E)");
        edit.setMnemonic('E');
        menuBar.add(edit);
        redo = new JMenuItem("重复", new ImageIcon("ico/redo16.gif"));
        redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
                InputEvent.CTRL_MASK));
        undo = new JMenuItem("撤消", new ImageIcon("ico/undo16.gif"));
        undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
                InputEvent.CTRL_MASK));
        cut = new JMenuItem("剪贴", new ImageIcon("ico/cut16.gif"));
        cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
                InputEvent.CTRL_MASK));
        copy = new JMenuItem("复制", new ImageIcon("ico/copy16.gif"));
        copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
                InputEvent.CTRL_MASK));

        paste = new JMenuItem("粘贴", new ImageIcon("ico/paste16.gif"));
        paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
                InputEvent.CTRL_MASK));
        timeDate = new JMenuItem("插入日期时间", new ImageIcon("ico/date.gif"));
        timeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
                InputEvent.CTRL_MASK));
        find = new JMenuItem("查找/替换", new ImageIcon("ico/find16.gif"));
        find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
                InputEvent.CTRL_MASK));
        selectAll = new JMenuItem("全选", new ImageIcon("ico/selectAll.gif"));
        selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
                InputEvent.CTRL_MASK));
        edit.add(redo);
        edit.add(undo);
        edit.add(cut);
        edit.add(copy);
        edit.add(paste);
        edit.add(timeDate);
        edit.add(find);
        edit.add(selectAll);
        // 增加编辑菜单事件响应
        redo.addActionListener(this);
        undo.addActionListener(this);
        cut.addActionListener(this);
        copy.addActionListener(this);
        paste.addActionListener(this);
        selectAll.addActionListener(this);
        timeDate.addActionListener(this);
        find.addActionListener(this);
        // 设置查看菜单
        see = new JMenu("查看(V)");
        see.setMnemonic('V');
        newline = new JMenuItem("自动换行");
        toolBar = new JCheckBoxMenuItem("是否隐藏工具栏");
        toolBar.setSelected(true);
        menuBar.add(see);
        see.add(newline);
        see.add(toolBar);
        // 增加工具事件响应
        newline.addActionListener(this);
        toolBar.addActionListener(this);
        // 设置查询数据库菜单
        database = new JMenu("查询数据库(D)");
        database.setMnemonic('D');
        dConection = new JMenuItem("连接数据库", new ImageIcon("ico/cserver.gif"));
        menuBar.add(database);
        database.add(dConection);
        // 增加查询数据库菜单事件响应
        dConection.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Database db = new Database(MainWindow.this);
                db.setVisible(true);
            }
        });
        // 设置外观
        face = new JMenu("外观设置(A)");
        face.setMnemonic('A');
        metal = new JMenuItem("JAVA 外观", new ImageIcon("ico/metal-Inform.gif"));
        motif = new JMenuItem("UNIX 外观", new ImageIcon("ico/metal-Inform.gif"));
        windows = new JMenuItem("Windows 外观", new ImageIcon(
                "ico/metal-Inform.gif"));
        menuBar.add(face);
        face.add(metal);
        face.add(motif);
        face.add(windows);
        // 增加外观事件响应
        metal.addActionListener(this);
        motif.addActionListener(this);
        windows.addActionListener(this);
        // 设置帮助菜单
        help = new JMenu("帮助(H)");
        help.setMnemonic('H');
        menuBar.add(help);
        helpContent = new JMenuItem("帮助内容(H)");
        helpContent.setMnemonic('H');
        helpContent.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 快捷键为F1,其中的"0"代表不使用控制键
        helpContent.setIcon(new ImageIcon("ico/help16.gif"));
        helpContent.addActionListener(this);
        about = new JMenuItem("关于", new ImageIcon("ico/About16.gif"));
        help.add(helpContent);
        help.add(about);
        about.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dialog = new ActionAbout(MainWindow.this);// 调用自定义关于对话框
                dialog.setVisible(true);
            }
        });
        // 工具栏上按钮定义
        bnew = new JButton(new ImageIcon("ico/new24.gif"));
        bopen = new JButton(new ImageIcon("ico/open24.gif"));
        bsave = new JButton(new ImageIcon("ico/save24.gif"));
        bprint = new JButton(new ImageIcon("ico/print24.gif"));
        bredo = new JButton(new ImageIcon("ico/Redo24.gif"));
        bundo = new JButton(new ImageIcon("ico/undo24.gif"));
        bcut = new JButton(new ImageIcon("ico/cut24.gif"));
        bcopy = new JButton(new ImageIcon("ico/copy24.gif"));
        bpaste = new JButton(new ImageIcon("ico/paste24.gif"));
        bfind = new JButton(new ImageIcon("ico/Find24.gif"));
        bselectAll = new JButton(new ImageIcon("ico/selectAll.gif"));
        bhelp = new JButton(new ImageIcon("ico/Help24.gif"));
        bexit = new JButton(new ImageIcon("ico/shutdown.gif"));
        // 设置提示文本
        bnew.setToolTipText("新建");
        bopen.setToolTipText("打开");
        bsave.setToolTipText("保存");
        bredo.setToolTipText("重复");
        bundo.setToolTipText("撤消");
        bcut.setToolTipText("剪贴");
        bcopy.setToolTipText("复制");
        bpaste.setToolTipText("粘贴");
        bfind.setToolTipText("查找/替换");
        bselectAll.setToolTipText("全选");
        bhelp.setToolTipText("帮助");
        bprint.setToolTipText("打印");
        bexit.setToolTipText("退出");
        bar = new JToolBar();
        getContentPane().add(bar, BorderLayout.NORTH);
        bar.add(bnew);
        bar.add(bopen);
        bar.add(bsave);
        bar.add(bprint);
        bar.addSeparator();
        bar.add(bredo);
        bar.add(bundo);
        bar.add(bcut);
        bar.add(bcopy);
        bar.add(bpaste);
        bar.add(bfind);
        //bar.add(bselectAll);
        bar.addSeparator();
        bar.add(bhelp);
        bar.addSeparator();
        bar.add(bexit);
        // 增加工具栏按钮事件
        bnew.addActionListener(this);
        bopen.addActionListener(this);
        bsave.addActionListener(this);
        bredo.addActionListener(this);
        bundo.addActionListener(this);
        bcut.addActionListener(this);
        bcopy.addActionListener(this);
        bpaste.addActionListener(this);
        bfind.addActionListener(this);
        bselectAll.addActionListener(this);
        bhelp.addActionListener(this);
        bprint.addActionListener(this);
        bexit.addActionListener(this);
        // 设置弹出菜单
        textPopup = new JPopupMenu();
        // text.add(textPopup);
        redoPopup = new JMenuItem("重复", new ImageIcon("ico/redo.jpg"));
        redoPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
                InputEvent.CTRL_MASK));
        undoPopup = new JMenuItem("撤消", new ImageIcon("ico/undo.jpg"));
        undoPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
                InputEvent.CTRL_MASK));
        cutPopup = new JMenuItem("剪贴", new ImageIcon("ico/Cut16.gif"));
        cutPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
                InputEvent.CTRL_MASK));
        copyPopup = new JMenuItem("复制", new ImageIcon("ico/copy.gif"));
        copyPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
                InputEvent.CTRL_MASK));
        pastePopup = new JMenuItem("粘贴", new ImageIcon("ico/paste.gif"));
        pastePopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
                InputEvent.CTRL_MASK));
        selectAllPopup = new JMenuItem("全选", new ImageIcon("ico/selectAll.gif"));
        selectAllPopup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
                InputEvent.CTRL_MASK));
        textPopup.add(redoPopup);
        textPopup.add(undoPopup);
        textPopup.addSeparator();
        textPopup.add(cutPopup);
        textPopup.add(copyPopup);
        textPopup.add(pastePopup);
        textPopup.addSeparator();
        textPopup.add(selectAllPopup);
        // 设置弹出菜单响应事件
        redoPopup.addActionListener(this);
        undoPopup.addActionListener(this);
        cutPopup.addActionListener(this);
        copyPopup.addActionListener(this);
        pastePopup.addActionListener(this);
        selectAllPopup.addActionListener(this);
        // 设置文件对话实例
        chooser = new JFileChooser();
        // 设置撤消、重复对象实例
        undoManger = new UndoManager();
        
        text.getDocument().addUndoableEditListener(this);
    }
    // 各主件的行为响应
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == new1 || e.getSource() == bnew) {
            if (true ==textAction) {
                saveDialog();
                JavaWord.start();
            } else {
                JavaWord.start();
            }
        }
        if (e.getSource() == open || e.getSource() == bopen) {
            openDialog();
        }
        if (e.getSource() == save || e.getSource() == bsave) {
            saveDialog();
        }
        if (e.getSource() == print || e.getSource() == bprint) {
            try {
                attributes = new HashPrintRequestAttributeSet();
                PrinterJob job = PrinterJob.getPrinterJob();
                if (job.printDialog())
                    job.print(attributes);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(MainWindow.this, e);
            }
        }
        if (e.getSource() == redo || e.getSource() == bredo
                || e.getSource() == redoPopup) {
             undoManger.redo();
        }
        if (e.getSource() == undo || e.getSource() == bundo
                || e.getSource() == undoPopup) {
              undoManger.undo();
        }
        if (e.getSource() == cut || e.getSource() == bcut
                || e.getSource() == cutPopup) {
            text.cut();
        }
        if (e.getSource() == copy || e.getSource() == bcopy
                || e.getSource() == copyPopup) {
            text.copy();
        }
        if (e.getSource() == paste || e.getSource() == bpaste
                || e.getSource() == pastePopup) {
            text.paste();
        }
        if (e.getSource() == find || e.getSource() == bfind) {
            FindDialog dFind = new FindDialog(text, MainWindow.this);
            dFind.setVisible(true);
        }
        if (e.getSource() == timeDate) {
            SimpleDateFormat dateFormat = new SimpleDateFormat(
                    "yyyy'年'MM'月'dd'日'+HH:mm:ss");
            Calendar today = Calendar.getInstance();
            String timeDate = dateFormat.format(today.getTime());
            text.append(timeDate);
        }
        if (e.getSource() == selectAll || e.getSource() == bselectAll
                || e.getSource() == selectAllPopup) {
            text.selectAll();
        }
        if (e.getSource() == newline) {
            text.setLineWrap(true);
        }
        if (e.getSource() == toolBar) {
            if (toolBar.isSelected())
                bar.setVisible(true);
            else
                bar.setVisible(false);
        }
        if (e.getSource() == helpContent || e.getSource() == bhelp) {
            Runtime currentRunTime = Runtime.getRuntime();
            Process newProcess = null;
            try { // c:\winnt\hh.exe 为*.chm帮助文件的启动文件
                newProcess = currentRunTime.exec("hh.exe JavaWord.chm");
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(MainWindow.this,
                        "不能正确地加载帮助文件,请检查您的c:\\winnt\\hh.exe文件是否存在", "打开文件",
                        JOptionPane.ERROR_MESSAGE);
                ex.printStackTrace();
            }
        }
        if (e.getSource() == exit || e.getSource() == bexit) {
            if (true ==textAction) {
                saveDialog();
                setVisible(false);
                shutWindow();
            } else {
                setVisible(false);
                shutWindow();
            }
            
        }
        if (e.getSource() == metal) {
            setFace("javax.swing.plaf.metal.MetalLookAndFeel");
        }
        if (e.getSource() == motif) {
            setFace("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        }
        if (e.getSource() == windows) {
            setFace("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        }
    }// 各主件的行为响应完毕
    // 外观设置
    public void setFace(String plaf) {
        try {
            UIManager.setLookAndFeel(plaf);
            SwingUtilities.updateComponentTreeUI(this);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    // 打开对话框
    public void openDialog() {
        chooser.setCurrentDirectory(new File("."));
        // 文件过滤
        chooser.setFileFilter(new FileFilter() {
            public boolean accept(File f) {
                String fileName = f.getName().toLowerCase();
                return fileName.endsWith(".txt") || f.isDirectory();
            }
            public String getDescription() {
                return "Text Files";
            }
        });
        int openResult = chooser.showOpenDialog(MainWindow.this);
        if (openResult == JFileChooser.APPROVE_OPTION) {
            text.setText("");
            try {
                in = new BufferedReader(new FileReader(chooser
                        .getSelectedFile().getPath()));
                String line;
                while ((line = in.readLine()) != null) {
                    text.append(line);
                    text.append("\n");
                    text.validate();
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(MainWindow.this, "文件不能打开",
                        "打开文件", JOptionPane.ERROR_MESSAGE);
                e.printStackTrace();
            }
        } else {
            JOptionPane.showMessageDialog(MainWindow.this, "请用户选择需要打开的文件",
                    "打开文件", JOptionPane.WARNING_MESSAGE);
        }
    } // 打开对话框完毕
    // 保存对话框
    public void saveDialog() {
        chooser.setCurrentDirectory(new File("."));
        // 文件过滤
        chooser.setFileFilter(new FileFilter() {
            public boolean accept(File f) {
                String fileName = f.getName().toLowerCase();
                return fileName.endsWith(".txt") || f.isDirectory();
            }
            public String getDescription() {
                return "Text Files";
            }
        });
        int saveResult = chooser.showSaveDialog(MainWindow.this);
        if (saveResult == JFileChooser.APPROVE_OPTION) {
            try {
                write = new PrintWriter(new FileOutputStream(chooser
                        .getSelectedFile().getName()), true);
                write.println(text.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(MainWindow.this, "文件不能保存",
                        "保存文件", JOptionPane.ERROR_MESSAGE);
                e.printStackTrace();
            }
        } else {
            JOptionPane.showMessageDialog(MainWindow.this, "请用户保存需要的文件",
                    "保存文件", JOptionPane.WARNING_MESSAGE);
        }
    }// 保存对话框完毕
    public void shutWindow() {
        System.gc();
    }
    public void keyTyped(KeyEvent e) {
    }
    public void keyPressed(KeyEvent e) {
        textAction = true;
    }
    public void keyReleased(KeyEvent e) {
    }
    public void mouseClicked(MouseEvent e) {
    }
    public void mousePressed(MouseEvent me) {
        if (me.isPopupTrigger()) {
            textPopup.show(text, me.getX(), me.getY());
        }
    }
    public void mouseReleased(MouseEvent me) {
        if (me.isPopupTrigger()) {
            textPopup.show(text, me.getX(), me.getY());
        }
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    // undo redo 判断是否可用
    public void undoableEditHappened(UndoableEditEvent parm1) {
        undoManger.addEdit(parm1.getEdit());
        // System.out.println(uedit);
        /*if (undoManger.canUndo()) {
            undo.setEnabled(true);
            bredo.setEnabled(true);
            // undoPopupItem.setEnabled(true);
        } else {
            undo.setEnabled(false);
            bundo.setEnabled(false);
            // undoPopupItem.setEnabled(false);
        }
        if (undoManger.canRedo()) {
            redo.setEnabled(true);
            bredo.setEnabled(true);
            // redoPopupItem.setEnabled(true);
        } else {
            redo.setEnabled(false);
            bredo.setEnabled(false);
            // redoPopupItem.setEnabled(false);
        }*/
    }
    public void windowOpened(WindowEvent e) {
        scroll.setFocusable(true);
    }
    public void windowClosing(WindowEvent e) {
        if (true == textAction) {
            saveDialog();
            setVisible(false);
        }
    }
    public void windowClosed(WindowEvent e) {
    }
    public void windowIconified(WindowEvent e) {
    }
    public void windowDeiconified(WindowEvent e) {
    }
    public void windowActivated(WindowEvent e) {
    }
    public void windowDeactivated(WindowEvent e) {
    }
}
// 数据库对话框行为
class Database extends JDialog implements KeyListener, WindowListener {
    JLabel lServer, lDbName, lSql, lUsername, lPassword;
    JTextField tServer, tDbName, tSql, tUsername;
    JPasswordField password;
    JButton bConection, bCancel;
    String strServer, strDbName, strSql, strUsername, strPassword;
    JPanel inputPane, buttonPane;
    public Database(JFrame databaseDialog) {
        super(databaseDialog, "连接数据库", true);
        Container contentPane = getContentPane();
        buttonPane = new JPanel();
        inputPane = new JPanel();
        contentPane.add(inputPane, BorderLayout.CENTER);
        inputPane.setLayout(new GridLayout(6, 2));
        // contentPane.setLayout();
        lServer = new JLabel("数据库服务器");
        lDbName = new JLabel("数据库名字");
        lSql = new JLabel("SQL语句");
        lUsername = new JLabel("数据库的用户名");
        lPassword = new JLabel("数据库的密码");
        tServer = new JTextField();
        tDbName = new JTextField();
        tSql = new JTextField("SELECT * FROM ");
        tUsername = new JTextField();
        password = new JPasswordField();
        bConection = new JButton("连接", new ImageIcon("ico/rs.gif"));
        bCancel = new JButton("取消", new ImageIcon("ico/rq.gif"));
        // 设置取消按钮事件响应
        bCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
            }
        });
        this.addWindowListener(this);
        inputPane.add(lServer);
        inputPane.add(tServer);
        inputPane.add(lDbName);
        inputPane.add(tDbName);
        inputPane.add(lSql);
        inputPane.add(tSql);
        inputPane.add(lUsername);
        inputPane.add(tUsername);
        inputPane.add(lPassword);
        inputPane.add(password);
        contentPane.add(buttonPane, BorderLayout.SOUTH);
        buttonPane.add(bConection);
        buttonPane.add(bCancel);
        setSize(390, 180);
        setResizable(false);
        // 设置确定按钮事件响应
        bConection.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DatabaseQuery dbq = new DatabaseQuery(Database.this);
                dbq.getDatabaseInfo();
                dbq.setVisible(true);
            }
        });
        // 增加文本域事件响应
        tServer.addKeyListener(this);
        tDbName.addKeyListener(this);
        tSql.addKeyListener(this);
        tUsername.addKeyListener(this);
        password.addKeyListener(this);
    }
    // 数据库实现
    class DatabaseQuery extends JDialog {
        JScrollPane scroll;
        JPanel shutDownPanel = new JPanel();
        JButton bShut;
        Statement stat;
        ResultSet rs;
        final JDialog dbDialog;
        Connection conn;
        public DatabaseQuery(JDialog dbDialog) {
            super(dbDialog, "查询结果", true);
            this.dbDialog = dbDialog;
            setTitle("查询结果");
            setDefaultCloseOperation(HIDE_ON_CLOSE);
            setSize(300, 250);
        }
        //
        public void getDatabaseInfo() {
            //获取文本域输入的信息
            strServer = tServer.getText().trim();
            strDbName = tDbName.getText().trim();
            strSql = tSql.getText().trim();
            strUsername = tUsername.getText().trim();
            strPassword = password.getText().trim();
            getContentPane().add(shutDownPanel, BorderLayout.SOUTH);
            bShut = new JButton("关闭", new ImageIcon("ico/exit.gif"));
            shutDownPanel.add(bShut);
            bShut.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    setVisible(false);
                }
            });
            Vector cloumn = new Vector();
            Vector rows = new Vector();
            try {
               
                //System.out.println(strSql);
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                String url = "jdbc:microsoft:sqlserver://"+strServer+":1433;databaseName="+strDbName+";";
                String username = strUsername;
                String password = strPassword;
                conn = DriverManager.getConnection(url, username, password);
                //conn = getConnection();
                stat = conn.createStatement();
                rs = stat.executeQuery(strSql);
                ResultSetMetaData meta = rs.getMetaData();
                for (int i = 1; i <= meta.getColumnCount(); i++)
                    cloumn.addElement(meta.getColumnName(i));
                while (rs.next()) {
                    rows.addElement(getRowNext(rs, meta));
                }
                JTable table = new JTable(rows, cloumn);
                scroll = new JScrollPane(table);
                getContentPane().add(scroll, BorderLayout.CENTER);
            } catch (Exception e) {
                JOptionPane.showMessageDialog(DatabaseQuery.this, "数据库连接错误",
                        "错误", JOptionPane.ERROR_MESSAGE);
                e.printStackTrace();
            }
        }
        public Vector getRowNext(ResultSet rs, ResultSetMetaData meta)
                throws Exception {
            Vector currentRow = new Vector();
            for (int i = 1; i <= meta.getColumnCount(); i++) {
                currentRow.addElement(rs.getString(i));
            }
            return currentRow;
        }
        //从当前目录中获取"database.properties"的文件
       /* public Connection getConnection() throws Exception {
            Properties props = new Properties();
            FileInputStream in = new FileInputStream("database.properties");
            props.load(in);
            in.close();
            String drivers = props.getProperty("jdbc.drivers");
            if (drivers != null)
                System.setProperty("jdbc.drivers", drivers);
            String url = props.getProperty("jdbc.url") + strServer
                    + ":1433;databaseName=" + strDbName + ";";
            //System.out.println(url);
            String username = props.getProperty("jdbc.username") + strUsername;
            String password = props.getProperty("jdbc.password") + strPassword;
            return DriverManager.getConnection(url, username, password);
        }*/
    }
    public void keyTyped(KeyEvent e) {
    }
    public void keyPressed(KeyEvent e) {
    }
    public void keyReleased(KeyEvent e) {
        if (e.getSource() == password || e.getSource() == tUsername)
            bConection.setEnabled(true);
    }
    public void windowOpened(WindowEvent e) {
        bConection.setEnabled(false);
    }
    public void windowClosing(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowClosed(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowIconified(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowDeiconified(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowActivated(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowDeactivated(WindowEvent e) {
        // TODO 自动生成方法存根
    }
}
//查找实现
class FindDialog extends JDialog implements ActionListener, WindowListener,
        KeyListener {
    final JTextArea text;
    JLabel lfind, lreplace;
    JTextField tfind, treplace;
    JButton bfind, breplace, bnext, bcancel;
    JPanel fieldPane, buttonPane;
    String strFind, strReplace;
    int txtPlace, txtLen, strNext;
    FindDialog(final JTextArea text, JFrame findDialog) {
        super(findDialog, "查找/替换", false);
        this.text = text;
        Container findPane = getContentPane();
        lfind = new JLabel("查找内容");
        lreplace = new JLabel("替换");
        tfind = new JTextField();
        treplace = new JTextField();
        bfind = new JButton("查找", new ImageIcon("ico/Find16.gif"));
        breplace = new JButton("替换", new ImageIcon("ico/Replace16.gif"));
        bcancel = new JButton("取消", new ImageIcon("ico/exit.gif"));
        bnext = new JButton("下一个", new ImageIcon("ico/FindAgain16.gif"));
        fieldPane = new JPanel();
        buttonPane = new JPanel();
        fieldPane.setLayout(new GridLayout(2, 2));
        findPane.add(fieldPane, BorderLayout.CENTER);
        findPane.add(buttonPane, BorderLayout.SOUTH);
        fieldPane.add(lfind);
        fieldPane.add(tfind);
        fieldPane.add(lreplace);
        fieldPane.add(treplace);
        buttonPane.add(bfind);
        buttonPane.add(breplace);
        buttonPane.add(bnext);
        buttonPane.add(bcancel);
        bfind.addActionListener(this);
        breplace.addActionListener(this);
        bcancel.addActionListener(this);
        this.addWindowListener(this);
        tfind.addKeyListener(this);
        treplace.addKeyListener(this);
        bnext.addActionListener(this);
        
        setSize(370, 120);
        setResizable(false);
    }
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == bfind) {
            find();
        }
        if (e.getSource() == breplace) {
            replace();
        }
        if (e.getSource() == bcancel) {
            setVisible(false);
        }
        if (e.getSource() == bnext) {
            findNext();
        }
    }
    //查找处理
    private void find() {
        strFind = tfind.getText();
        strNext = 0; //开始位置
        txtPlace = text.getText().indexOf(strFind, strNext);
        txtLen = txtPlace + strFind.length();
        text.select(txtPlace, txtLen);
        strNext = text.getSelectionEnd(); //选中内容的最后位置
        if (txtPlace == -1) /*没有找到的处理*/ {
            JOptionPane.showMessageDialog(null, "没你找到你需要的内容", "查找",
                    JOptionPane.INFORMATION_MESSAGE);
        }
        bnext.setEnabled(true);
    }
    //替换处理
    private void replace() {
        strReplace = treplace.getText();
        text.replaceRange(strReplace, txtPlace, txtPlace + strFind.length());
    }
    //查找下一个处理
    private void findNext() {
        bfind.setEnabled(false);
        txtPlace = text.getText().indexOf(strFind, strNext);
        txtLen = txtPlace + strFind.length();
        text.select(txtPlace, txtLen);
        strNext = text.getSelectionEnd(); //获取查找下一个内容的最后位置
        if (txtPlace == -1) /*没有找到的处理*/ {
            JOptionPane.showMessageDialog(null, "没你找到你需要的内容", "查找下一个",
                    JOptionPane.INFORMATION_MESSAGE);
            strNext = 0; //没有找到初始化位置,以变重新查找
            tfind.setText("");
            bnext.setEnabled(false);
            breplace.setEnabled(false);
        }
    }
    public void windowOpened(WindowEvent e) {
        bfind.setEnabled(false);
        breplace.setEnabled(false);
        bnext.setEnabled(false);
    }
    public void windowClosing(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowClosed(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowIconified(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowDeiconified(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowActivated(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void windowDeactivated(WindowEvent e) {
        // TODO 自动生成方法存根
    }
    public void keyTyped(KeyEvent e) {
        // TODO 自动生成方法存根
    }
    public void keyPressed(KeyEvent ke) {
        if (ke.getSource() == tfind)
            bfind.setEnabled(true);
        if (ke.getSource() == treplace)
            breplace.setEnabled(true);
    }
    public void keyReleased(KeyEvent e) {
        // TODO 自动生成方法存根
    }
}
// 帮助的关于对话框行为
class ActionAbout extends JDialog {
    public ActionAbout(JFrame dialog) {
        super(dialog, "关于", true);
        Container contentPane = getContentPane();
        contentPane.add(new JLabel("<html><h1>欢迎使用JAVA字处理软件</h1><hr>"
                + "<h2>版本号(Beta):1.0</h2><hr>" + "<h3>******</h3></html>"),
                BorderLayout.CENTER);
        JPanel p = new JPanel();
        JButton ok = new JButton("确定", new ImageIcon("ico/ok.gif"));
        setResizable(false);
        ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
            }
        });
        p.add(ok);
        contentPane.add(p, BorderLayout.SOUTH);
        contentPane.add(new JLabel(new ImageIcon("ico/duke.gif")),
                BorderLayout.WEST);
        setSize(400, 250);
    }
}娶林志玲,让蔡依林为我终生不嫁!!!          ~~~林被素xiamen滴~~~         下蛋公鸡,公鸡中的战斗机,哦也!   “想要飞得高,就要把地平线忘掉”。

作者: joe88    时间: 2008-9-29 09:25

哇          好长............这些代码具体有什么用呢?

作者: tdlxdj    时间: 2008-9-29 09:25

谢谢版主,兄弟收下啦!!刚好用来交作业!
谢谢版主,兄弟收下啦!!刚好用来交作业!嘿嘿!!

作者: 山^鹰    时间: 2008-9-29 09:25

好長哦..樓主..我也是厦門的...
作者: 蓝色海洋    时间: 2008-9-29 09:25

好长,,楼主你好厉害,佩服




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/) Powered by Discuz! 7.2