⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverframe.java

📁 一个服务器,客户端程序.客户端发送查询信息,服务端返回查询结果
💻 JAVA
字号:
package homework;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.util.Vector;

import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStreamReader;
import java.io.PrintWriter;


/**
 * <p>Title: java source file filter</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author Jesse
 * @version 1.0
 */
public class ServerFrame extends JFrame {
    public Vector data;
    JFileChooser chooser = new JFileChooser();
    File file;
    Component curComponet = this.getComponent(0);
    JTable table;
    ServerSocket ss;
    Socket s;
    public ServerFrame() {
        file = null;
        //Set up the menu bar.
        JMenu fileMenu = createFileMenu();
        JMenu dataMenu = createDataMenu();
        JMenu aboutMenu = createAboutMenu();
        JMenuBar mb = new JMenuBar();
        mb.add(fileMenu);
        mb.add(dataMenu);
        mb.add(aboutMenu);
        setJMenuBar(mb);

        data = new Vector();
        table = new JTable(new MyTableModel());
        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setPreferredSize(new Dimension(400, 400));
        this.getContentPane().add(scrollPane);

        setTitle();
        pack();
        this.setSize(400, 400);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        try{
            ss = new ServerSocket(888);
            while(true)
            {
                s=ss.accept();
                new Thread(new Server(this,s)).start();
            }
        }catch(Exception e)
        {
            System.out.println(e);
        }

    }

    class MyTableModel extends AbstractTableModel {
        String[] columnNames = {"Name",
                               "Address",
                               "Phone"};

        public int getColumnCount() {
            return 3;
        }

        public int getRowCount() {
            return data.size();
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {

            return ((String[]) data.get(row))[col];
        }

        /*
         * Don't need to implement this method unless your table's
         * editable.
         */
        public boolean isCellEditable(int row, int col) {
            return true;
        }

        /*
         * Don't need to implement this method unless your table's
         * data can change.
         */
        public void setValueAt(Object value, int row, int col) {
            ((String[]) data.get(row))[col] = (String) value;
            fireTableCellUpdated(row, col);
        }
    }


    /**
     * createDataMenu
     *
     * @return JMenu
     */
    private JMenu createDataMenu() {

        JMenu menu = new JMenu("Data");
        menu.add(new addAction());
        menu.add(new deleteAction());
        return menu;
    }

    /**
     * createAboutMenu
     *
     * @return JMenu
     */
    protected JMenu createAboutMenu() {
        JMenu menu = new JMenu("About");
        menu.add(new AboutAction());
        return menu;
    }

    public void setTitle() {
        setTitle("Server      " + file);
    }

    protected JMenu createFileMenu() {
        JMenu menu = new JMenu("File");

        //New , Open , Save and Exit are actions of our own creation.
        menu.add(new NewAction());
        menu.addSeparator();
        menu.add(new OpenAction());
        menu.add(new SaveAction());
        menu.addSeparator();
        menu.add(new ExitAction());
        return menu;
    }

    // New File Action
    class NewAction extends AbstractAction {
        NewAction() {
            super("New");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            newFile();
        }
    }


    public void newFile() {
        file = null;
        data = new Vector();
        table.updateUI();
        setTitle();
    }

    // About Action
    class AboutAction extends AbstractAction {
        AboutAction() {
            super("About");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(curComponet,
                                          "Author: Jesse \nVersion: 1.0 Beta \nDate: July 3th 2006",
                                          "About",
                                          JOptionPane.INFORMATION_MESSAGE);
        }
    }


    // Open File Action
    class OpenAction extends AbstractAction {
        OpenAction() {
            super("Open");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            openFile();
        }
    }


    // open the file
    public void openFile() {

        StringBuffer content = new StringBuffer();
        int returnVal = chooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            file = chooser.getSelectedFile();
            try {
                data = new Vector();
                table.selectAll();
                FileReader fin = new FileReader(file);
                BufferedReader in = new BufferedReader(fin);
                String c;
                String t[];
                while ((c = in.readLine()) != null) {
                    t = c.split("___");
                    data.add(t);
                }
                in.close();
            } catch (FileNotFoundException fe) {
                JOptionPane.showMessageDialog(curComponet, fe, "File not Found",
                                              JOptionPane.ERROR_MESSAGE);
                return;
            } catch (IOException ie) {
                JOptionPane.showMessageDialog(curComponet, ie,
                                              "File read Error",
                                              JOptionPane.ERROR_MESSAGE);
                return;
            }

            setTitle();
            table.updateUI();
        }

    }


    // Save File Action
    class SaveAction extends AbstractAction {
        SaveAction() {
            super("Save");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            saveFile();
        }
    }


    // save the file
    public void saveFile() {
        //a new File
        if (file == null) {
            int returnVal = chooser.showOpenDialog(this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                file = chooser.getSelectedFile();
                if (file.exists()) {
                    int ret = JOptionPane.showConfirmDialog(this,
                            "The file exits, do you want to overwrite it?",
                            "Confirm", JOptionPane.YES_NO_CANCEL_OPTION);
                    switch (ret) {
                    case JOptionPane.YES_OPTION:
                        saveToFile(file);
                        break;
                    case JOptionPane.NO_OPTION:
                        saveFile();
                        return;
                    case JOptionPane.CANCEL_OPTION:
                        return;
                    }
                } else {
                    try {
                        file.createNewFile();
                    } catch (IOException ie) {
                        JOptionPane.showMessageDialog(curComponet, ie,
                                "Can not create a new file.",
                                JOptionPane.ERROR_MESSAGE);
                    }
                    saveToFile(file);
                }
            }
        } else {
            saveToFile(file);
        }
    }

    // save to the file
    public void saveToFile(File file) {
        try {
            FileWriter fout = new FileWriter(file);
            BufferedWriter out = new BufferedWriter(fout);
            String t[];
            for (int i = 0; i < data.size(); i++) {
                t = (String[]) data.get(i);
                out.write(t[0]);
                out.write("___");
                out.write(t[1]);
                out.write("___");
                out.write(t[2]);
                out.write("\r\n");
            }
            out.close();
        } catch (IOException e) {
            JOptionPane.showConfirmDialog(this, e);
        }
        setTitle();

    }

    // Exit File Action
    class ExitAction extends AbstractAction {
        ExitAction() {
            super("Exit");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {

            int ret = JOptionPane.showConfirmDialog(null,
                    "Save File?");
            if (ret == JOptionPane.YES_OPTION) {
                saveFile();
                System.exit(0);
            } else if (ret == JOptionPane.NO_OPTION) {
                System.exit(0);

            }
            System.exit(0);
        }


    }


    // add data File Action
    class addAction extends AbstractAction {
        addAction() {
            super("Add Data");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {
            String[] t = {" ", " ", " "};
            data.add(t);
            table.updateUI();
        }
    }


    // delete data File Action
    class deleteAction extends AbstractAction {
        deleteAction() {
            super("Delete Data");
            setEnabled(true);
        }

        public void actionPerformed(ActionEvent e) {

            data.remove(table.getSelectedRow());
            table.updateUI();
        }
    }


    public static void main(String[] args) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        ServerFrame serverframe = new ServerFrame();

    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -