1 packagecom.dvd.view;2
3 importjava.awt.BorderLayout;4 importjava.awt.GridLayout;5 importjava.awt.event.ActionEvent;6 importjava.awt.event.ActionListener;7 importjava.awt.event.ItemEvent;8 importjava.awt.event.ItemListener;9 importjava.awt.event.MouseAdapter;10 importjava.awt.event.MouseEvent;11 importjava.util.ArrayList;12 importjava.util.List;13
14 importjavax.swing.BorderFactory;15 importjavax.swing.JButton;16 importjavax.swing.JComboBox;17 importjavax.swing.JInternalFrame;18 importjavax.swing.JLabel;19 importjavax.swing.JOptionPane;20 importjavax.swing.JPanel;21 importjavax.swing.JScrollPane;22 importjavax.swing.JTable;23 importjavax.swing.JTextField;24 importjavax.swing.event.TableModelListener;25 importjavax.swing.table.TableModel;26
27 importcom.dvd.Util.DVDUtil;28 importcom.dvd.biz.DVDBiz;29 importcom.dvd.biz.Impl.DVDBizImpl;30 importcom.dvd.entiy.DVD;31
32 public class AdminDVDOperatorView extendsJInternalFrame {33
34 private static final long serialVersionUID = -3558209667843105955L;35 private DVDBiz dvdBiz = null;36 private List dvdList = null;37 private DVDInfoTableModel infoTableModel = null;38
39 private JPanel paneltable = null;40 private JScrollPane jScrollPanetable = null;//用来保存Jtable的一个面板
41 private JTable table = null;//声明JTable
42 private JPanel panelmanage = null;43 private JPanel manage = null;//声明信息
44
45 private JPanel panelbutton = null;//按钮面板
46 private JTextField tf_search = null;47 private JButton btn_search = null;48 private JButton btn_add = null;49 private JButton btn_updata = null;50 private JButton btn_del = null;51 private JButton btn_exit = null;52 private JComboBox cb_type = null;53 private JLabel lb_type = null;54
55 private JLabel lb_name = null;56 private JLabel lb_count = null;57 private JLabel lb_status = null;58 private JTextField tf_name = null;59 private JTextField tf_count = null;60 private JComboBox cb_status = null;61
62 publicAdminDVDOperatorView() {63 dvdBiz = newDVDBizImpl();64 init();65 registerListener();66 }67
68 private voidinit() {69 this.setTitle("DVD租赁记录查询");70 this.setSize(525, 450);71 this.setIconifiable(true);//窗体可最小化
72 this.setClosable(true);//窗体可被关闭
73 this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);74 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
75 this.setLayout(newBorderLayout());76 dvdList = new ArrayList();77
78 lb_name = new JLabel("DVD名字", JLabel.CENTER);79 lb_count = new JLabel("借出次数", JLabel.CENTER);80 lb_status = new JLabel("DVD状态", JLabel.CENTER);81 tf_name = new JTextField(8);82 tf_count = new JTextField(8);83 cb_status = new JComboBox(new String[] { "已借", "可借"});84 paneltable = new JPanel(newBorderLayout());85 panelmanage = newJPanel();86 manage = newJPanel();87
88 table = newJTable();89
90 //让JTable绑定数据模型呈现数据
91
92 refreshTable(dvdList);93
94 manage.add(lb_name);95 manage.add(tf_name);96 manage.add(lb_count);97 manage.add(tf_count);98 manage.add(lb_status);99 manage.add(cb_status);100
101 jScrollPanetable = new JScrollPane();//创建面板102 //给面板设置边框
103 paneltable104 .setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "DVD记录查询 "));105 jScrollPanetable.setViewportView(table);106 paneltable.add(jScrollPanetable);107 panelmanage.add(manage);108 paneltable.add(panelmanage, BorderLayout.SOUTH);109 this.add(paneltable, BorderLayout.CENTER);110 //给面板设置边框
111 panelmanage.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null)));112
113 panelbutton = new JPanel(new GridLayout(9, 1, 5, 10));114 //给面板设置边框
115 panelbutton.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(null, null), "查询条件"));116 this.add(panelbutton, BorderLayout.EAST);117 lb_type = new JLabel("查询类型");118 panelbutton.add(lb_type);119 cb_type = new JComboBox(new String[] { "所有DVD", "DVD编号", "DVD名字"});120 panelbutton.add(cb_type);121
122 tf_search = newJTextField();123 panelbutton.add(tf_search);124
125 btn_search = new JButton("查询");126 panelbutton.add(btn_search);127 tf_search.setEditable(false);//默认不可用
128
129 btn_add = new JButton("添加DVD");130 panelbutton.add(btn_add);131
132 btn_updata = new JButton("更新DVD");133 panelbutton.add(btn_updata);134 btn_updata.setEnabled(false);//默认不可用
135
136 btn_del = new JButton("删除DVD");137 panelbutton.add(btn_del);138 btn_del.setEnabled(false);//默认不可用
139
140 panelbutton.add(newJLabel());141 this.getRootPane().setDefaultButton(btn_search);//设置默认获取的焦点
142
143 btn_exit = new JButton("退出窗口");144 panelbutton.add(btn_exit);145
146 this.setVisible(true);147 }148
149 private voidregisterListener() {150
151 btn_exit.addActionListener(newActionListener() {152
153 @Override154 public voidactionPerformed(ActionEvent e) {155 int flag = JOptionPane.showInternalConfirmDialog(AdminDVDOperatorView.this, "是否确定退出?", "确认信息",156 JOptionPane.YES_NO_OPTION);157 if (flag ==JOptionPane.YES_OPTION) {158 AdminDVDOperatorView.this.dispose();159 }160 }161 });162
163 btn_del.addActionListener(newActionListener() {164
165 @Override166 public voidactionPerformed(ActionEvent e) {167 int row = table.getSelectedRow();//取得选中的那行
168 int did = (Integer) table.getValueAt(row, 0);169 int flag = JOptionPane.showInternalConfirmDialog(AdminDVDOperatorView.this, "是否确定删除DVD?", "确认信息",170 JOptionPane.YES_NO_OPTION);171 if (flag ==JOptionPane.YES_OPTION) {172 boolean res =dvdBiz.delDVD(did);173 if(res) {174 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "删除成功!");175 return;176 } else{177 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "删除失败,请联系管理员!!");178 return;179 }180 }181 }182 });183
184 btn_updata.addActionListener(newActionListener() {185
186 @Override187 public voidactionPerformed(ActionEvent e) {188 String dname =tf_name.getText().trim();189 String dcount =tf_count.getText().trim();190 int status =cb_status.getSelectedIndex();191 if (dname.equals("")) {192 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "DVD名字不能为空");193 return;194 } else if (dcount.equals("")) {195 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "借出次数不能为空");196 return;197 }198 if (!DVDUtil.isNumber(dcount)) {199 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "DVD借出次数只能是数字");200 return;201 }202 int flag = JOptionPane.showInternalConfirmDialog(AdminDVDOperatorView.this, "是否确定更新DVD?", "确认信息",203 JOptionPane.YES_NO_OPTION);204
205 if (flag ==JOptionPane.YES_OPTION) {206 int row =table.getSelectedRow();207 boolean res =dvdBiz208 .modifyDVD(new DVD((Integer) table.getValueAt(row, 0), dname, newInteger(dcount), status));209 System.out.println(res);210 if(res) {211 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "更新成功!");212 return;213 } else{214 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "更新失败,请联系管理员!");215 return;216 }217 }218 }219 });220
221 table.addMouseListener(newMouseAdapter() {222 @Override223 public voidmouseClicked(MouseEvent e) {224 /// 假设选中一行,更新删除按钮可用
225 if (table.getSelectedRow() != -1) {226 btn_del.setEnabled(true);227 btn_updata.setEnabled(true);228
229 }230 int row = table.getSelectedRow();//得到你所选中那行的下标
231 String dname = table.getValueAt(row, 1).toString();232 String dcount = table.getValueAt(row, 2).toString();233 String status = table.getValueAt(row, 3).toString();234 tf_name.setText(dname);235 tf_count.setText(dcount);236 cb_status.setSelectedItem(status);237 }238 });239
240 cb_type.addItemListener(newItemListener() {241
242 @Override243 public voiditemStateChanged(ItemEvent e) {244 String item =e.getItem().toString();245 tf_search.setText("");246 if (item.equals("所有DVD")) {247 tf_search.setEditable(false);248 } else{249 tf_search.setEditable(true);250 }251 }252 });253
254 btn_add.addActionListener(newActionListener() {255
256 @Override257 public voidactionPerformed(ActionEvent e) {258 String dname =tf_name.getText().trim();259 String dcount =tf_count.getText().trim();260 int status = cb_status.getSelectedIndex();//0代表已经借出,1代表可借
261 if (dname.equals("")) {262 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "DVD名字不能为空");263 return;264 } else if (dcount.equals("")) {265 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "借出次数不能为空");266 return;267 }268 if (!DVDUtil.isNumber(dcount)) {269 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "DVD借出次数只能是数字");270 return;271 }272 int flag = JOptionPane.showInternalConfirmDialog(AdminDVDOperatorView.this, "是否确定添加DVD?", "确认信息",273 JOptionPane.YES_NO_OPTION);274
275 if (flag ==JOptionPane.YES_OPTION) {276 boolean res = dvdBiz.addDVD(new DVD(dname, newInteger(dcount), status));277 if(res) {278 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "添加成功!");279 return;280 } else{281 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "添加失败,请联系管理员!!");282 return;283 }284 }285 }286 });287
288 btn_search.addActionListener(newActionListener() {289
290 @Override291 public voidactionPerformed(ActionEvent e) {292
293 int index =cb_type.getSelectedIndex();294 String content =tf_search.getText().trim();295 if (index != 0 && content.equals("")) {296 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "查询的内容不能为空");297 return;298 }299 //先清除数据 ,防止数据 的累加
300 if (dvdList != null) {301 dvdList.clear();302 }303 if (index == 0) {304 dvdList =dvdBiz.queryAllDVDs();305 } else if (index == 1) {306 tf_search.setEnabled(true);//输入框可用
307 if(DVDUtil.isNumber(content)) {308 DVD dvd =dvdBiz.queryDVDById(Integer.parseInt(content));309 if (dvd != null) {310 dvdList.add(dvd);311 }312 } else{313 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "输入的编号只能是数字");314 return;315 }316 } else{317 dvdList =dvdBiz.queryDVDByName(content);318 }319 refreshTable(dvdList);320 btn_del.setEnabled(false);321 btn_updata.setEnabled(false);322 if (dvdList.size() == 0) {323 JOptionPane.showInternalMessageDialog(AdminDVDOperatorView.this, "没有你要查询的记录!");324 return;325 }326 }327 });328 }329
330 private class DVDInfoTableModel implementsTableModel {331 private List dvdsList = null;332
333 private DVDInfoTableModel(ListdvdList) {334 this.dvdsList =dvdList;335 }336
337 @Override338 public voidaddTableModelListener(TableModelListener l) {339
340 }341
342 //JTable 列的数据类型
343 public Class> getColumnClass(intcolumnIndex) {344
345 return String.class;346 }347
348 //JTable数据 的列数
349 public intgetColumnCount() {350
351 return 4;352 }353
354 //设置 JTable数据 的列名
355 public String getColumnName(intcolumnIndex) {356 if (columnIndex == 0) {357 return "影碟ID";358 } else if (columnIndex == 1) {359 return "影碟名字";360 } else if (columnIndex == 2) {361 return "影碟借出次数";362 } else if (columnIndex == 3) {363 return "影碟状态";364 } else{365 return "出错";366 }367 }368
369 //JTable显示 的行数
370 public intgetRowCount() {371
372 returndvdsList.size();373 }374
375 //获取JTable中指定行指定单元格的数据
376 public Object getValueAt(int rowIndex, intcolumnIndex) {377 DVD dvd =dvdsList.get(rowIndex);378 if (columnIndex == 0) {379 returndvd.getId();380 } else if (columnIndex == 1) {381 returndvd.getDname();382 } else if (columnIndex == 2) {383 returndvd.getDcount();384 } else if (columnIndex == 3) {385 return "" + (dvd.getStatus() == 1 ? "可借" : "已借");386 } else{387 return "出错";388 }389 }390
391 //设置单元格是否可以编辑
392 public boolean isCellEditable(int rowIndex, intcolumnIndex) {393
394 return false;395 }396
397 @Override398 public voidremoveTableModelListener(TableModelListener l) {399
400 }401
402 @Override403 public void setValueAt(Object aValue, int rowIndex, intcolumnIndex) {404
405 }406
407 }408
409 //刷新Jtable并显示数据
410 private void refreshTable(ListdvdList) {411 infoTableModel = newDVDInfoTableModel(dvdList);412 table.setModel(infoTableModel);413 }414 }