java小小工具 对象信息管理

来源:互联网 发布:开眼视频 mac 编辑:程序博客网 时间:2024/06/05 01:57
/*
 * 对信息封装成一个类
 * 利用Jlist类显示
 * 利用集合对对象进行删除,查找,添加
 * java.util.Comparator的简单使用

 */


package cn.hncu.main;import java.awt.BorderLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Arrays;import java.util.Calendar;import javax.swing.ButtonGroup;import javax.swing.DefaultListModel;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JTextField;import cn.hncu.common.MyDate;import cn.hncu.common.Person;import cn.hncu.common.Student;import cn.hncu.games.Gobang;import cn.hncu.games.HitMouse;import cn.hncu.games.RetroSnaker;import cn.hncu.games.Tetris;import cn.hncu.mytoolkit.MusicPlayer;import cn.hncu.mytoolkit.MyDraw;import cn.hncu.mytoolkit.MyJsq;import cn.hncu.mytoolkit.MyNoteBook;import cn.hncu.set.MySet;public class PersonShow extends JFrame{private String dir="./images_PersonShow/";private JLabel labOne;private JRadioButton[][] reJRadioButtons;private JTextField txtNameField,txtStuIDField;private JComboBox[][] personMessage;int count=0;//动态监听private ActionListener actionListeren=new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//对月份的合理管理if(e.getSource() instanceof JComboBox){if(e.getSource()==personMessage[0][0]||e.getSource()==personMessage[0][1]){String strYear=(String)personMessage[0][0].getSelectedItem();int year=Integer.parseInt(strYear.substring(0,strYear.length()-1));int month=personMessage[0][1].getSelectedIndex()+1;int day=personMessage[0][2].getSelectedIndex()+1;Calendar calender=Calendar.getInstance();personMessage[0][1].removeActionListener(actionListeren);personMessage[0][1].removeAllItems();personMessage[0][2].removeAllItems();int todayMonth=calender.get(Calendar.MONTH)+1;int dayOfNum=MyDate.maxDays(year, month);if(calender.get(Calendar.YEAR)==year){for (int i = 1; i <= todayMonth; i++) {personMessage[0][1].addItem(i+"月");}int today=MyDate.maxDays(year, month);if(month<todayMonth)personMessage[0][1].setSelectedIndex(month-1);else{personMessage[0][1].setSelectedIndex(todayMonth-1);today=calender.get(Calendar.DATE);}dayOfNum=today;}else{for (int i = 1; i <= 12; i++) {personMessage[0][1].addItem(i+"月");}personMessage[0][1].setSelectedIndex(month-1);}personMessage[0][1].addActionListener(actionListeren);for (int i = 1; i <= dayOfNum; i++) {personMessage[0][2].addItem(i+"日");}if(day<=dayOfNum)personMessage[0][2].setSelectedIndex(day-1);elsepersonMessage[0][2].setSelectedIndex(dayOfNum-1);}else if(e.getSource()==personMessage[1][0]){int index=personMessage[1][0].getSelectedIndex();personMessage[1][1].removeAllItems();for (int i = 0; i < province_city[index].length; i++) {personMessage[1][1].addItem(province_city[index][i]);}}else if(e.getSource()==personMessage[2][0]){sort();search();}else if(e.getSource()==personMessage[2][1]){sort();search();}}else if(e.getSource() instanceof JRadioButton){if(e.getSource()==reJRadioButtons[0][0]){personMessage[1][2].removeAllItems();personMessage[1][2].setEnabled(false);txtStuIDField.setEditable(false);}else if(e.getSource()==reJRadioButtons[0][1]){for (int i = 0; i < specialty.length; i++) {personMessage[1][2].addItem(specialty[i]);}personMessage[1][2].setEnabled(true);txtStuIDField.setEditable(true);}}else if(e.getSource() instanceof JButton){if(e.getSource()==addRemove[0]){String name=txtNameField.getText();if(name.equals(""))name=null;String sex=null;if(reJRadioButtons[1][0].isSelected())sex="男";elsesex="女";String strYear=(String)personMessage[0][0].getSelectedItem();int year=Integer.parseInt(strYear.substring(0,strYear.length()-1));int month=personMessage[0][1].getSelectedIndex()+1;int day=personMessage[0][2].getSelectedIndex()+1;MyDate myDate=new MyDate(year, month, day);String province=(String)personMessage[1][0].getSelectedItem();String city=(String)personMessage[1][1].getSelectedItem();String politicalStatus=null;if(tuanYuan.isSelected())politicalStatus="团员";Person p=new Person(name, sex, myDate, province, city, politicalStatus);if(reJRadioButtons[0][0].isSelected()){if(mySet.add(p))personListModel.addElement(mySet.get(mySet.size()-1));}else{String stuId=txtStuIDField.getText();if(stuId.equals(""))stuId=null;String specially=(String)personMessage[1][2].getSelectedItem();Student s=new Student(p, stuId, specially);if(mySet.add(s))personListModel.addElement(mySet.get(mySet.size()-1));}}else if(e.getSource()==addRemove[1]){if(personList.getSelectedIndex()==-1)return;if(mySet.size()<1)return;int index=personList.getSelectedIndex();personListModel.remove(index);mySet.remove(index);}else if(e.getSource()==addRemove[2]){personListModel.removeAllElements();mySet.removeAll();}sort();search();}else if(e.getSource() instanceof JMenuItem){          if(e.getActionCommand().equals("Draw"))new MyDraw();else if(e.getActionCommand().equals("NoteBook"))new MyNoteBook();else if(e.getActionCommand().equals("Counter"))new MyJsq();else if(e.getActionCommand().equals("MusicPlayer"))new MusicPlayer();else if(e.getActionCommand().equals("Tetris"))new Tetris();else if(e.getActionCommand().equals("HitMouse"))new HitMouse();else if(e.getActionCommand().equals("RetroSnaker"))new RetroSnaker();else if(e.getActionCommand().equals("Gobang"))new Gobang();}}//排序private void sort() {personListModel.removeAllElements();String strSort=(String)personMessage[2][1].getSelectedItem();Object[] obj=mySet.getAll();Arrays.sort(obj, new ComPerson(strSort, 0));mySet.removeAll();for (int i = 0; i < obj.length; i++) {mySet.add(obj[i]);}for (int i = 0; i < mySet.size(); i++) {personListModel.addElement(mySet.get(i));}}//接口实现比较排序class ComPerson implements java.util.Comparator<Object>{private String comTerm;private int order;public ComPerson(String comTerm,int order) {this.comTerm=comTerm;this.order=order;}@Overridepublic int compare(Object o1, Object o2) {Person p1=(Person)o1;Person p2=(Person)o2;if(comTerm.equals("姓名")){if(p1.getName()==null&&p2.getName()!=null)return -1;else if(p2.getName()==null&&p1.getName()!=null)return 1;else if(p1.getName()==null&&p2.getName()==null)return 0;if(p1.getName().compareTo(p2.getName())>0){if(order==0)return 1;elsereturn -1;}else if(p1.getName().compareTo(p2.getName())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}else if(comTerm.equals("性别")){if(p1.getSex().compareTo(p2.getSex())>0){if(order==0)return 1;elsereturn -1;}else if(p1.getSex().compareTo(p2.getSex())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}else if(comTerm.equals("出生年月")){if(p1.getMyDate().beforeInt(p2.getMyDate())<0){if(order==0)return 1;elsereturn -1;}else if(p1.getMyDate().beforeInt(p2.getMyDate())>0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}else if(comTerm.equals("省份")){if(p1.getProvince().compareTo(p2.getProvince())>0){if(order==0)return 1;elsereturn -1;}else if(p1.getProvince().compareTo(p2.getProvince())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}else if(comTerm.equals("省市")){if(p1.getProvince().compareTo(p2.getProvince())>0){if(order==0)return 1;elsereturn -1;}else if(p1.getProvince().compareTo(p2.getProvince())<0){if(order==0)return -1;elsereturn 1;}else{if(p1.getCity()==null&&p2.getCity()!=null)return -1;else if(p2.getCity()==null&&p1.getCity()!=null)return 1;else if(p1.getCity()==null&&p2.getCity()==null)return 0;if(p1.getCity().compareTo(p2.getCity())>0){if(order==0)return 1;elsereturn -1;}else if(p1.getCity().compareTo(p2.getCity())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}}else if(comTerm.equals("学院")){if(p1 instanceof Student&&!(p2 instanceof Student))return 1;else if(p2 instanceof Student&&!(p1 instanceof Student))return -1;else if(!(p2 instanceof Student)&&!(p1 instanceof Student))return 0;if(((Student)p1).getSpecially().compareTo(((Student)p2).getSpecially())>0){if(order==0)return 1;elsereturn -1;}else if(((Student)p1).getSpecially().compareTo(((Student)p2).getSpecially())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}else{if(p1 instanceof Student&&!(p2 instanceof Student))return 1;else if(p2 instanceof Student&&!(p1 instanceof Student))return -1;else if(!(p2 instanceof Student)&&!(p1 instanceof Student))return 0;if(((Student)p1).getStuId()==null&&((Student)p2).getStuId()!=null)return -1;else if(((Student)p2).getStuId()==null&&((Student)p1).getStuId()!=null)return 1;else if(((Student)p1).getStuId()==null&&((Student)p2).getStuId()==null)return 0;if(((Student)p1).getStuId().compareTo(((Student)p2).getStuId())>0){if(order==0)return 1;elsereturn -1;}else if(((Student)p1).getStuId().compareTo(((Student)p2).getStuId())<0){if(order==0)return -1;elsereturn 1;}elsereturn 0;}}}//查找private void search() {personListModel.removeAllElements();String strSearch=(String)personMessage[2][0].getSelectedItem();for (int i = 0; i < mySet.size(); i++) {if(strSearch.equals("Person")){if(mySet.get(i) instanceof Person)personListModel.addElement(mySet.get(i));}else if(strSearch.equals("Student")){if(mySet.get(i) instanceof Student)personListModel.addElement(mySet.get(i));}else if(strSearch.equals("男")){if(((Person)mySet.get(i)).getSex().equals(strSearch))personListModel.addElement(mySet.get(i));}else if(strSearch.equals("女")){if(((Person)mySet.get(i)).getSex().equals(strSearch))personListModel.addElement(mySet.get(i));}else if(strSearch.endsWith("市")||strSearch.endsWith("区")||strSearch.endsWith("省")){if(((Person)mySet.get(i)).getProvince().equals(strSearch))personListModel.addElement(mySet.get(i));}else if(strSearch.endsWith("学院")){if(mySet.get(i) instanceof Student)if(((Student)mySet.get(i)).getSpecially().equals(strSearch))personListModel.addElement(mySet.get(i));}else if(strSearch.equals("团员")){if(((Person)mySet.get(i)).getPoliticalStatus()!=null)personListModel.addElement(mySet.get(i));}}}};private String[] province,specialty;private String[][] province_city;private JCheckBox tuanYuan;private JButton[] addRemove;private DefaultListModel personListModel;private JList personList;private JMenu[] menu;private JMenuItem[][] menuItem;private MySet mySet=new MySet(true);public PersonShow(){super("PersonShow");setBounds(200, 60, 900, 600);setDefaultCloseOperation(EXIT_ON_CLOSE);//菜单JMenuBar bar=new JMenuBar();String[] str0={"选项","工具","游戏"};String[][] str00={{},          {"画图","记事本","计算器","音乐播放器"},          {"俄罗斯方块","打地鼠","贪吃蛇","五子棋"}};String[][] str00Com={{},                    {"Draw","NoteBook","Counter","MusicPlayer"},                    {"Tetris","HitMouse","RetroSnaker","Gobang"}};menu=new JMenu[str0.length];menuItem=new JMenuItem[menu.length][];for (int i = 0; i < menuItem.length; i++) {menu[i]=new JMenu(str0[i]);menuItem[i]=new JMenuItem[str00[i].length];for (int j = 0; j < menuItem[i].length; j++) {menuItem[i][j]=new JMenuItem(str00[i][j]);menuItem[i][j].setActionCommand(str00Com[i][j]);menuItem[i][j].addActionListener(actionListeren);menu[i].add(menuItem[i][j]);}bar.add(menu[i]);}setJMenuBar(bar);//内容窗格布局JPanel personInPanel=new JPanel(new GridLayout(9, 1));JPanel personOutPanel=new JPanel(new BorderLayout());JSplitPane personSplitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,personInPanel, personOutPanel);personSplitPane.setDividerLocation(200);personSplitPane.setOneTouchExpandable(true);getContentPane().add(personSplitPane);reJRadioButtons=new JRadioButton[2][];//personInPanel布局JLabel labZero=new JLabel("信息管理:",JLabel.CENTER);labZero.setFont(new Font("仿宋", Font.BOLD+Font.ITALIC, 20));personInPanel.add(labZero);JPanel paneZero=new JPanel(new GridLayout(1, 2));ButtonGroup groZero=new ButtonGroup();String[] strZero={"Person","Student"};String[] imgZero={"Person.jpg","student.jpg"};reJRadioButtons[0]=new JRadioButton[strZero.length];for (int i = 0; i < reJRadioButtons[0].length; i++) {if(i==0)reJRadioButtons[0][i]=new JRadioButton(strZero[i],new ImageIcon(dir+imgZero[i]),true);elsereJRadioButtons[0][i]=new JRadioButton(strZero[i],new ImageIcon(dir+imgZero[i]));reJRadioButtons[0][i].addActionListener(actionListeren);groZero.add(reJRadioButtons[0][i]);paneZero.add(reJRadioButtons[0][i]);}personInPanel.add(paneZero);JPanel paneOne=new JPanel();JLabel labOne=new JLabel("姓名:");paneOne.add(labOne);txtNameField=new JTextField(12);paneOne.add(txtNameField);personInPanel.add(paneOne);JPanel paneTwo=new JPanel(new GridLayout(1, 2));ButtonGroup groTwo=new ButtonGroup();String[] strTwo={"男","女"};String[] imgTwo={"nan.jpg","nu.jpg"};reJRadioButtons[1]=new JRadioButton[strTwo.length];for (int i = 0; i < reJRadioButtons[1].length; i++) {if(i==0)reJRadioButtons[1][i]=new JRadioButton(strTwo[i],new ImageIcon(dir+imgTwo[i]),true);elsereJRadioButtons[1][i]=new JRadioButton(strTwo[i],new ImageIcon(dir+imgTwo[i]));groTwo.add(reJRadioButtons[1][i]);paneTwo.add(reJRadioButtons[1][i]);}personInPanel.add(paneTwo);personMessage=new JComboBox[3][];String[][] strMyDate=new String[3][];int[][] intMyDate=new int[strMyDate.length][];int[] numOne={2016-1990+1,12,31};int[] numTwo={1990,1,1};String[] numThree={"年","月","日"};for (int i = 0; i < strMyDate.length; i++) {strMyDate[i]=new String[numOne[i]];intMyDate[i]=new int[numOne[i]];for (int j = 0; j < strMyDate[i].length; j++) {intMyDate[i][j]=numTwo[i]+j;strMyDate[i][j]=intMyDate[i][j]+numThree[i];}}JPanel paneThree=new JPanel(new GridLayout(1, strMyDate.length));personMessage[0]=new JComboBox[strMyDate.length];for (int i = 0; i < personMessage[0].length; i++) {personMessage[0][i]=new JComboBox(strMyDate[i]);paneThree.add(personMessage[0][i]);}personMessage[0][0].addActionListener(actionListeren);personMessage[0][1].addActionListener(actionListeren);personInPanel.add(paneThree);personMessage[1]=new JComboBox[3];provinceCity();personMessage[1][0]=new JComboBox(province);personMessage[1][0].addActionListener(actionListeren);personInPanel.add(personMessage[1][0]);personMessage[1][1]=new JComboBox(province_city[0]);personInPanel.add(personMessage[1][1]);specialty=new String[]{"土木工程学院","城市管理学院","外国语学院","信息科学与技术学院","美术与艺术科学学院","化学与环境科学学院","数学与计算科学学院","体育学院","通信技术与科学学院","音乐学院","文学院","商学院"};personMessage[1][2]=new JComboBox();personMessage[1][2].setEnabled(false);personInPanel.add(personMessage[1][2]);JPanel paneFour=new JPanel();JLabel labFour=new JLabel("学号:");paneFour.add(labFour);txtStuIDField=new JTextField(10);txtStuIDField.setEditable(false);paneFour.add(txtStuIDField);tuanYuan=new JCheckBox("团员");paneFour.add(tuanYuan);personInPanel.add(paneFour);//personOutPanel布局personListModel=new DefaultListModel();personList=new JList(personListModel);personOutPanel.add(new JScrollPane(personList));//下方控制面板JPanel controlPane=new JPanel();String[] strControl={"添加","删除选中项","删除全部"};addRemove=new JButton[strControl.length];for (int i = 0; i < addRemove.length; i++) {addRemove[i]=new JButton(strControl[i]);addRemove[i].addActionListener(actionListeren);controlPane.add(addRemove[i]);}personMessage[2]=new JComboBox[2];controlPane.add(new JLabel("查找关键字:"));personMessage[2][0]=new JComboBox(addStr(addStr(strZero,strTwo),addStr(province,specialty)));personMessage[2][0].addItem("团员");personMessage[2][0].addActionListener(actionListeren);controlPane.add(personMessage[2][0]);controlPane.add(new JLabel("排序关键字:"));String[] strSort={"姓名","性别","出生年月","省份","省市","学院","学号"};personMessage[2][1]=new JComboBox(strSort);personMessage[2][1].addActionListener(actionListeren);controlPane.add(personMessage[2][1]);personOutPanel.add(controlPane,BorderLayout.SOUTH);setVisible(true);}//省市private void provinceCity() {province=new String[]{"北京市","上海市","天津市","重庆市","香港特别行政区","澳门特别行政区","台湾省","内蒙古省","新疆省","广西省","西藏省","宁夏省","辽宁省","吉林省","黑龙江省","河北省","山西省","陕西省","甘肃省","青海省","山东省","安徽省","江苏省","浙江省","河南省","湖北省","湖南省","江西省","福建省","云南省","海南省","四川省","贵州省","广东省"};province_city=new String[][]{{},{},{},{},{},{},{"基隆市","台中市","新竹市","台南市","嘉义市","台北市","高雄市"},{"呼和浩特市","包头市","乌海市","赤峰市","通辽市","鄂尔多斯市","呼伦贝尔市","巴彦淖尔市","乌兰察布市","兴安市","锡林郭勒市","阿拉善市"},{"乌鲁木齐市","克拉玛依市","吐鲁番市","哈密市","昌吉市","和田市","阿克苏市","喀什市","克孜勒苏市","柯尔克孜市","巴音郭楞市","博尔塔拉市","伊犁市","哈萨克市","塔城市","阿勒泰市","库尔勒市","石河子市","阿拉尔市","图木舒克市","五家渠市"},{"南宁市","柳州市","桂林市","梧州市","北海市","防城港市","钦州市","贵港市","玉林市","百色市","贺州市","河池市","来宾市","崇左市"},{"拉萨市","昌都市","山南市","日喀则市","那曲市","阿里市","林芝市"},{"银川市","石嘴山市","吴忠市","固原市","中卫市"},{"沈阳市","大连市","鞍山市","抚顺市","本溪市","丹东市","锦州市","营口市","阜新市","辽阳市","盘锦市","铁岭市","朝阳市","葫芦岛市"},{"长春市","吉林市","四平市","辽源市","通化市","白山市","松原市","白城市","延边市"},{"哈尔滨市","齐齐哈尔市","鸡西市","鹤岗市","双鸭山市","大庆市","伊春市","佳木斯市","七台河市","牡丹江市","黑河市","绥化市","大兴安岭市"},{"石家庄市","唐山市","秦皇岛市","邯郸市","邢台市","保定市","张家口市","承德市","沧州市","廊坊市","衡水市"},{"太原市","大同市","阳泉市","长治市","晋城市","朔州市","晋中市","运城市","忻州市","临汾市","吕梁市"},{"西安市","铜川市","宝鸡市","咸阳市","渭南市","延安市","汉中市","榆林市","安康市","商洛市"},{"兰州市","嘉峪关市","金昌市","白银市","天水市","武威市","张掖市","平凉市","酒泉市","庆阳市","定西市","陇南市","临夏市","甘南市"},{"西宁市","海东市","海北市","黄南市","海南市","果洛市","玉树市","海西市"},{"济南市","青岛市","淄博市","枣庄市","东营市","烟台市","潍坊市","威海市","济宁市","泰安市","日照市","莱芜市","临沂市","德州市","聊城市","滨州市","菏泽市"},{"合肥市","芜湖市","蚌埠市","淮南市","马鞍山市","淮北市","铜陵市","安庆市","黄山市","滁州市","阜阳市","宿州市","巢湖市","六安市","亳州市","池州市","宣城市"},{"南京市","无锡市","徐州市","常州市","苏州市","南通市","连云港市","淮安市","盐城市","扬州市","镇江市","泰州市","宿迁市"},{"杭州市","宁波市","温州市","嘉兴市","湖州市","绍兴市","金华市","衢州市","舟山市","台州市","丽水市"},{"郑州市","开封市","洛阳市","平顶山市","焦作市","鹤壁市","新乡市","安阳市","濮阳市","许昌市","漯河市","三门峡市","南阳市","商丘市","信阳市","周口市","驻马店市","济源市"},{"武汉市","黄石市","襄樊市","十堰市","荆州市","宜昌市","荆门市","鄂州市","孝感市","黄冈市","咸宁市","随州市","恩施市","仙桃市","潜江市","天门市","神农架市"},{"长沙市","株洲市","湘潭市","衡阳市","邵阳市","岳阳市","常德市","张家界市","益阳市","郴州市","永州市","怀化市","娄底市","湘西市"},{"南昌市","景德镇市","萍乡市","九江市","新余市","鹰潭市","赣州市","吉安市","宜春市","抚州市","上饶市"},{"福州市","厦门市","莆田市","三明市","泉州市","漳州市","南平市","龙岩市","宁德市"},{"昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","普洱市","临沧市市","文山市","红河市","西双版纳市","楚雄市","大理市","德宏市","怒江市","迪庆市"},{"海口市","五指山市","琼海市","文昌市","万宁市","东方市","定安市","屯昌市","澄迈市","临高市","白沙市","昌江市","乐东市","陵水市","保亭市","琼中市","西沙市","南沙市","中沙市","三亚市","儋州市"},{"成都市","自贡市","攀枝花市","泸州市","德阳市","绵阳市","广元市","遂宁市","内江市","乐山市","南充市","宜宾市","广安市","达州市","眉山市","雅安市","巴中市","资阳市","阿坝市","甘孜市","凉山市"},{"贵阳市","六盘水市","遵义市","安顺市","铜仁市","毕节市","黔西南市","黔东南市","黔南市"},{"广州市","深圳市","珠海市","汕头市","韶关市","佛山市","江门市","湛江市","茂名市","肇庆市","惠州市","梅州市","汕尾市","河源市","阳江市","清远市","东莞市","中山市","潮州市","揭阳市","云浮市"}};}//合并字符串public String[] addStr(String[] str1,String[] str2) {String[] str=new String[str1.length+str2.length];for (int i = 0; i < str.length; i++) {if(i<str1.length)str[i]=str1[i];elsestr[i]=str2[i-str1.length];}return str;}public static void main(String[] args) {new PersonShow();}}


2 0
原创粉丝点击