📄 servermainframe.java
字号:
/**
*@Server.java
*@author weiWang
*@date 2006-3-27
*/
package com.herb.server;
//服务器类,用于添加学生信息(成绩除外),响应教师和学生的请求信息
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
public class ServerMainFrame extends JFrame{
Dimension sc=Toolkit.getDefaultToolkit().getScreenSize();
static DefaultTableModel m;
JTable table;
static JList list;
static Vector vector=new Vector();
static DefaultListModel listModel=new DefaultListModel();
ServerPart serverpart=new ServerPart();
static String[] name={"学号","姓名","性别","系名","班级","课程","成绩","联系电话"};
static Object[][] data;
static Vector majorVector=new Vector();
JPanel listPanel=new JPanel();
JPanel listBtnPanel=new JPanel();
JPanel tablePanel=new JPanel();
JButton listDelBtn=new JButton("删除");
JButton listAddBtn=new JButton("新增");
JButton addBtn=new JButton("新增",new ImageIcon("com/herb/server/icons/add.gif"));
JButton delBtn=new JButton("删除",new ImageIcon("com/herb/server/icons/del.png"));
JButton xiuBtn=new JButton("修改",new ImageIcon("com/herb/server/icons/reset.gif"));
JButton paixuBtn1,paixuBtn2,paixuBtn3;
JButton adBtn,dlBtn,resetBtn,array1,array2,array3,searchBtn1,searchBtn2; //工具栏中的按钮
JPanel btnPanel=new JPanel();
JMenuBar bar=new JMenuBar();
JMenu fileMenu=new JMenu("文件");
JMenu bianjiMenu=new JMenu("编辑");
JMenu editMenu=new JMenu("操作");
JMenuItem delMenuItem=new JMenuItem("删 除 Ctrl+D");
JMenuItem resetMenuItem=new JMenuItem("修 改 Ctrl+R");
JMenuItem addMenuItem=new JMenuItem("新 建 Ctrl+N");
JMenuItem seeMenuItem=new JMenuItem("查 看.. Ctrl+S");
JMenuItem exitMenuItem=new JMenuItem("退 出 Ctrl+X");
JMenuItem arrayItem1=new JMenuItem("按学号排序 Ctrl+I");
JMenuItem arrayItem2=new JMenuItem("按姓名排序 Ctrl+N");
JMenuItem arrayItem3=new JMenuItem("按班级排序 Ctrl+C");
JMenu searchMenu=new JMenu("查 找 Ctrl+S");
JMenuItem searchItem1=new JMenuItem("按学号查找 ");
JMenuItem searchItem2=new JMenuItem("按姓名查找 ");
JToolBar tableToolBar=new JToolBar();
JToolBar listToolBar=new JToolBar();
JTabbedPane tabbedPanel=new JTabbedPane();
static DefaultListModel hislistModel;
static JList hisList;
public ServerMainFrame(){
super("学生管理系统(服务器端)");
Thread st=new Thread(serverpart); //服务器开始运作
st.start();
addBtn.setPreferredSize(new Dimension(100,26));
delBtn.setEnabled(true);
delBtn.setPreferredSize(new Dimension(100,26));
xiuBtn.setPreferredSize(new Dimension(100,26));
btnPanel.add(addBtn);
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addEvent(); //添加事件
}
});
addBtn.setBackground(new Color(225,234,253));
addBtn.setForeground(new Color(71,30,5));
addBtn.setToolTipText("增加新的学生信息");
btnPanel.add(delBtn);
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
deleteEvent(); //删除事件
}
});
delBtn.setBackground(new Color(225,234,253));
delBtn.setForeground(new Color(71,30,5));
delBtn.setToolTipText("删除学生信息");
btnPanel.add(xiuBtn);
xiuBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
resetEvent(); //修改事件
}
});
xiuBtn.setBackground(new Color(225,234,253));
xiuBtn.setForeground(new Color(71,30,5));
xiuBtn.setToolTipText("修改学生信息");
paixuBtn1=new JButton("按学号排序",new ImageIcon("com/herb/server/icons/paixu1.gif"));
paixuBtn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentId();
}
});
paixuBtn1.setForeground(new Color(71,30,5));
paixuBtn1.setPreferredSize(new Dimension(110,27));
btnPanel.add(paixuBtn1);
paixuBtn2=new JButton("按班级排序",new ImageIcon("com/herb/server/icons/paixu2.gif"));
paixuBtn2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentClass();
}
});
paixuBtn2.setForeground(new Color(71,30,5));
paixuBtn2.setPreferredSize(new Dimension(110,27));
btnPanel.add(paixuBtn2);
paixuBtn3=new JButton("按姓名排序",new ImageIcon("com/herb/server/icons/paixu3.gif"));
paixuBtn3.setForeground(new Color(71,30,5));
paixuBtn3.setPreferredSize(new Dimension(110,27));
paixuBtn3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentName();
}
});
btnPanel.add(paixuBtn3);
btnPanel.setBorder(BorderFactory.createTitledBorder("选择操作:"));
initMenu();
initTable();
//initListToolBar();
initList();
initTabbedPanel();
getContentPane().setLayout(new BorderLayout(5,5));
getContentPane().add("West",tabbedPanel);
getContentPane().add("North",bar);
tablePanel.setLayout(new BorderLayout(5,5));
tablePanel.add("Center",new JScrollPane(table));
tablePanel.add("South",btnPanel);
initTableToolBar();
tablePanel.add("North",tableToolBar); // add tableToolBar
getContentPane().add("Center",tablePanel);
getContentPane().add("South",new JLabel(""));
getContentPane().add("East",new JLabel(""));
setSize(950,700);
show();
LocationSet.setFrameLocation(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//设置组件字体
public void setComponentFont(){
FontSet.fontSet(btnPanel,1);
}
//初始化卡片面板
public void initTabbedPanel(){
JPanel historyPanel=new JPanel();
historyPanel.setLayout(new BorderLayout(5,5));
historyPanel.setBorder(BorderFactory.createTitledBorder("历史纪录:"));
hislistModel=new DefaultListModel();
hisList=new JList(hislistModel);
hisList.setToolTipText("按住Ctrl或Shift键可以多选!");
hisList.setForeground(new Color(113,61,2));
hisList.setBackground(new Color(253,248,254));
hisList.setSelectionBackground(new Color(217,221,253));
hisList.setSelectionForeground(Color.red);
hisList.setFont(new Font("宋体",Font.BOLD,12));
historyPanel.add("Center",new JScrollPane(hisList));
historyPanel.setPreferredSize(new Dimension(140,400));
JButton delBtn=new JButton("删除历史纪录",new ImageIcon("com/herb/server/icons/his_del.png"));
delBtn.setToolTipText("请选择要删除的纪录");
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
deleteHistoryInfor();
}
});
historyPanel.add("South",delBtn);
tabbedPanel.setFont(new Font("Fixedsys",Font.PLAIN,9));
tabbedPanel.addTab("Major List",new ImageIcon("com/herb/server/icons/list.gif"),listPanel);
tabbedPanel.setToolTipTextAt(0,"专业名列表");
tabbedPanel.addTab("History ",new ImageIcon("com/herb/server/icons/history.gif"),historyPanel);
tabbedPanel.setToolTipTextAt(1,"历史纪录");
tabbedPanel.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
System.out.println("here");
if(tabbedPanel.getSelectedIndex()==1){
System.out.println(tabbedPanel.getSelectedIndex());
updateHistroyList();
}
}
});
}
//当切换到历史面板时更新历史纪录列表
public static void updateHistroyList(){
hislistModel.removeAllElements(); //删除所有数据先
Vector history=new Vector();
history=FileEvent.getHistoryInfor();
System.out.println(history.toString());
for(int i=0;i<history.size();i++) //添加数据
hislistModel.addElement(history.elementAt(i).toString());
}
//删除历史纪录
public void deleteHistoryInfor(){
int[] index=new int[(hisList.getSelectedIndices()).length];
index=hisList.getSelectedIndices();
System.out.println("要删除的个数="+index.length);
for(int i=0;i<index.length;i++){
System.out.print("分别删除第");
System.out.print(index[i]+"行,");
}
if(index.length==0)
new MsgDialog(this,"请选择要删除的纪录!");
else{
int z=1;
for(int i=0;i<index.length;i++){ //同时删除多项(可以成功,但还是会出现
System.out.println("删除第"+i+"行时,index["+i+"]=="+index[i]); //araayIndexOutOfBoundsException...)
hislistModel.removeElementAt(index[i]);
FileEvent.deleteHistoryInfor(index[i]);
index[i+1]=index[i+1]-z++;
}
}
}
//表格工具栏初始化
public void initTableToolBar(){
tableToolBar.setToolTipText("你可以拖动我的哟!");
adBtn=new JButton(new ImageIcon("icons/add.gif"));
adBtn.setToolTipText("增加新的学生信息");
dlBtn=new JButton(new ImageIcon("com/herb/server/icons/del_tool.png"));
dlBtn.setToolTipText("删除学生信息");
resetBtn=new JButton(new ImageIcon("com/herb/server/icons/write_tool.gif"));
resetBtn.setToolTipText("修改学生信息");
array1=new JButton(new ImageIcon("com/herb/server/icons/paixu1.gif"));
array1.setToolTipText("按学号排序表格");
array2=new JButton(new ImageIcon("com/herb/server/icons/paixu2.gif"));
array2.setToolTipText("按班级排序表格");
array3=new JButton(new ImageIcon("com/herb/server/icons/paixu3.gif"));
array3.setToolTipText("按姓名排序表格");
searchBtn1=new JButton(new ImageIcon("com/herb/server/icons/searchI.gif"));
searchBtn1.setToolTipText("按学号查找");
searchBtn2=new JButton(new ImageIcon("com/herb/server/icons/searchN.gif"));
searchBtn2.setToolTipText("按姓名查找");
tableToolBar.add(adBtn);
adBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addEvent(); // 新增事件
}
});
tableToolBar.add(dlBtn);
dlBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
deleteEvent(); //删除事件
}
});
tableToolBar.add(resetBtn);
resetBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
resetEvent(); //修改事件
}
});
tableToolBar.addSeparator();
tableToolBar.add(array1);
array1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentId(); //按学号排序
}
});
tableToolBar.add(array2);
array2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentClass(); //按班级名排序
}
});
tableToolBar.add(array3);
array3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
arrayByStudentName(); //按学生名排序
}
});
tableToolBar.addSeparator();
tableToolBar.add(searchBtn1);
searchBtn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
searchById();
}
});
tableToolBar.add(searchBtn2);
searchBtn2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
searchByName();
}
});
}
//列表初始化
public void initList(){
majorVector=FileEvent.getFileName();
listPanel.setPreferredSize(new Dimension(140,400));
list=new JList(listModel);
list.setForeground(new Color(91,30,255));
list.setBackground(new Color(240,248,255));
list.setSelectionBackground(new Color(239,227,253));
list.setSelectionForeground(new Color(157,2,37));
list.setFont(new Font("宋体",Font.BOLD,12));
list.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
vector=FileEvent.getStudent(
String.valueOf(list.getSelectedValue())); //获得所有学生数据信息
setData(vector);
setBtnEnabled(true);
}
}
});
list.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if(list.isSelectionEmpty())
listDelBtn.setEnabled(false);
else
listDelBtn.setEnabled(true);
}
});
for(int i=0;i<majorVector.size();i++)
listModel.addElement(majorVector.elementAt(i));
listPanel.setLayout(new BorderLayout(5,5));
listBtnPanel.add(listAddBtn);
listAddBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MajorAddFrame addframe=new MajorAddFrame();
}
});
listBtnPanel.add(listDelBtn);
listPanel.add("South",listBtnPanel);
listPanel.setBorder(BorderFactory.createTitledBorder("系 名:"));
listDelBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
deleteListItem();
}
});
listDelBtn.setEnabled(false);
listPanel.add("West",new JLabel(""));
listPanel.add("East",new JLabel(""));
listPanel.add("North",new JLabel(""));
listPanel.add("Center",new JScrollPane(list));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -