📄 serverframe.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 + -