package com.mwq.frame.check_out; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Vector; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumnModel; import com.mwq.dao.Dao; import com.mwq.mwing.FixedColumnTablePanel; import com.mwq.mwing.MTable; import com.mwq.tool.Today; public class DayDialog extends JDialog { // private JTable table; // // private DefaultTableModel tableModel; private Vector<String> tableColumnV; private Vector<Vector<Object>> tableValueV; private JComboBox dayComboBox; private JComboBox monthComboBox; private JComboBox yearComboBox; private int daysOfMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; private Dao dao=Dao.getInstance(); /** * Launch the application * * @param args */ public static void main(String args[]) { try { DayDialog dialog = new DayDialog(); dialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the dialog */ public DayDialog() { super(); setModal(true); setTitle("日结账"); setBounds(60, 60, 860, 620); final JPanel panel = new JPanel(); getContentPane().add(panel, BorderLayout.NORTH); int year = Today.getYEAR(); int month = Today.getMONTH(); int day = Today.getDAY(); yearComboBox = new JComboBox(); yearComboBox.setMaximumRowCount(10); String minDatetime = dao.sOrderFormOfMinDatetime(); if (minDatetime == null) { yearComboBox.addItem(year); } else { int minYear = Integer.valueOf(minDatetime.substring(0, 4)); for (int y = minYear; y <= year; y++) { yearComboBox.addItem(y); } } yearComboBox.setSelectedItem(year); judgeLeapYear(year); yearComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int year = (Integer) yearComboBox.getSelectedItem();// 获得选中的年度 judgeLeapYear(year);// 判断是否为闰年,以确定2月份的天数 int month = (Integer) monthComboBox.getSelectedItem();// 获得选中的月份 if (month == 2) {// 如果选中的为2月 int itemCount = dayComboBox.getItemCount();// 获得日下拉菜单当前的天数 if (itemCount != daysOfMonth[2]) {// 如果日下拉菜单当前的天数不等于2月份的天数 if (itemCount == 28)// 如果日下拉菜单当前的天数为28天 dayComboBox.addItem(29);// 则添加为29天 else // 否则日下拉菜单当前的天数则为29天 dayComboBox.removeItem(29);// 则减少为28天 } } } }); panel.add(yearComboBox); final JLabel yearLabel = new JLabel(); yearLabel.setText("年"); panel.add(yearLabel); monthComboBox = new JComboBox(); monthComboBox.setMaximumRowCount(12); for (int m = 1; m < 13; m++) { monthComboBox.addItem(m); } monthComboBox.setSelectedItem(month); monthComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int month = (Integer) monthComboBox.getSelectedItem();// 获得选中的月份 int itemCount = dayComboBox.getItemCount();// 获得日下拉菜单当前的天数 while (itemCount != daysOfMonth[month]) {// 如果日下拉菜单当前的天数不等于选中月份的天数 if (itemCount > daysOfMonth[month]) {// 如果大于选中月份的天数 dayComboBox.removeItem(itemCount);// 则移除最后一个选择项 itemCount--;// 并将日下拉菜单当前的天数减1 } else {// 否则小于选中月份的天数 itemCount++;// 将日下拉菜单当前的天数加1 dayComboBox.addItem(itemCount);// 并添加为选择项 } } } }); panel.add(monthComboBox); final JLabel monthLabel = new JLabel(); monthLabel.setText("月"); panel.add(monthLabel); dayComboBox = new JComboBox(); dayComboBox.setMaximumRowCount(10); int days = daysOfMonth[month]; for (int d = 1; d <= days; d++) { dayComboBox.addItem(d); } dayComboBox.setSelectedItem(day); panel.add(dayComboBox); final JLabel dayLabel = new JLabel(); dayLabel.setText("日 "); panel.add(dayLabel); final JButton submitButton = new JButton(); submitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tableValueV.removeAllElements(); int year = (Integer) yearComboBox.getSelectedItem(); int month = (Integer) monthComboBox.getSelectedItem(); int day = (Integer) dayComboBox.getSelectedItem(); int columnCount = tableColumnV.size(); Vector orderFormV = dao.sOrderFormOfDay(year + "-" + month + "-" + day); for (int row = 0; row < orderFormV.size(); row++) { Vector rowV = new Vector();// 表格行对象 Vector orderForm = (Vector) orderFormV.get(row);// 消费单对象 String orderFormNum = orderForm.get(1).toString(); rowV.add(orderFormNum);// 编号 rowV.add(orderForm.get(2));// 台号 rowV.add(orderForm.get(3).toString().substring(11, 19));// 开台时间 rowV.add(orderForm.get(4));// 消费金额 for (int column = 4; column < columnCount; column++) { rowV.add("——");// 商品消费数量,默认未消费 } Vector orderItemV = dao .sOrderItemAndMenuByOrderFormNum(orderFormNum); for (int i = 0; i < orderItemV.size(); i++) { Vector orderItem = (Vector) orderItemV.get(i);// 消费项目对象 String menuName = orderItem.get(3).toString(); for (int column = 4; column < columnCount; column++) { if (tableColumnV.get(column).equals(menuName)) { int amount = (Integer) orderItem.get(4); if (rowV.get(column).toString().equals("——")) rowV.set(column, amount); else rowV.set(column, (Integer) rowV.get(column) + amount); break; } } } tableValueV.add(rowV); } Vector totalV = new Vector(); totalV.add("总计"); totalV.add("——"); totalV.add("——"); int rowCount = tableValueV.size(); for (int column = 3; column < columnCount; column++) { int total = 0; for (int row = 0; row < rowCount; row++) { Object value = tableValueV.get(row).get(column); if (!value.equals("——")) total += (Integer) value; } totalV.add(total); } tableValueV.add(totalV); Container contentPane = getContentPane(); contentPane.remove(1); contentPane.add(new FixedColumnTablePanel(tableColumnV, tableValueV, 4), BorderLayout.CENTER); SwingUtilities.updateComponentTreeUI(contentPane); } }); submitButton.setText("确定"); panel.add(submitButton); tableColumnV = new Vector<String>(); tableColumnV.add("编号"); tableColumnV.add("台号"); tableColumnV.add("开台时间"); tableColumnV.add("消费金额"); Vector<Vector<Object>> vector = dao.sMenu(); for (int i = 0; i < vector.size(); i++) { tableColumnV.add(vector.get(i).get(2).toString()); } tableValueV = new Vector(); getContentPane().add( new FixedColumnTablePanel(tableColumnV, tableValueV, 4), BorderLayout.CENTER); // } private void judgeLeapYear(int year) { if (year % 100 == 0) { if (year % 400 == 0) daysOfMonth[2] = 29; else daysOfMonth[2] = 28; } else { if (year % 4 == 0) daysOfMonth[2] = 29; else daysOfMonth[2] = 28; } } }
上面代码得出如下图:
上面代码的217-218行:
contentPane.add(new FixedColumnTablePanel(tableColumnV,
tableValueV, 4), BorderLayout.CENTER);
还用下面代码到:
package com.mwq.mwing; import java.awt.BorderLayout; import java.awt.Color; import java.util.Vector; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; public class FixedColumnTablePanel extends JPanel { private MTable fixedColumnTable; private FixedColumnTableModel fixedColumnTableModel; private MTable floatingColumnTable; private FloatingColumnTableModel floatingColumnTableModel; private Vector<String> tableColumnV; private Vector<Vector<Object>> tableValueV; private int fixedColumn = 2; public FixedColumnTablePanel(Vector<String> tableColumnV, Vector<Vector<Object>> tableValueV, int fixedColumn) { super(); setLayout(new BorderLayout()); this.tableColumnV = tableColumnV; this.tableValueV = tableValueV; this.fixedColumn = fixedColumn; fixedColumnTableModel = new FixedColumnTableModel();// 创建固定列表格模型对象 fixedColumnTable = new MTable(fixedColumnTableModel);// 创建固定列表格对象 ListSelectionModel fixed = fixedColumnTable.getSelectionModel();// 获得选择模型对象 fixed.addListSelectionListener(new MListSelectionListener(true));// 添加行被选中的事件监听器 floatingColumnTableModel = new FloatingColumnTableModel();// 创建可移动列表格模型对象 floatingColumnTable = new MTable(floatingColumnTableModel);// 创建可移动列表格对象 ListSelectionModel floating = floatingColumnTable.getSelectionModel();// 获得选择模型对象 floating.addListSelectionListener(new MListSelectionListener(false));// 添加行被选中的事件监听器 JScrollPane scrollPane = new JScrollPane();// 创建一个滚动面版对象 scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedColumnTable .getTableHeader()); // 将固定列表格头放到滚动面版的左上方 JViewport viewport = new JViewport();// 创建一个用来显示基础信息的视口对象 viewport.setView(fixedColumnTable);// 将固定列表格添加到视口中 viewport.setPreferredSize(fixedColumnTable.getPreferredSize());// 设置视口的首选大小为固定列表格的首选大小 scrollPane.setRowHeaderView(viewport);// 将视口添加到滚动面版的标题视口中 scrollPane.setViewportView(floatingColumnTable);// 将可移动表格添加到默认视口 add(scrollPane, BorderLayout.CENTER); // } class MTable extends JTable { public MTable(AbstractTableModel tableModel) { super(tableModel); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); } // 表格列名信息 @Override public JTableHeader getTableHeader() { // 获得表格头对象 JTableHeader tableHeader = super.getTableHeader(); tableHeader.setReorderingAllowed(false);// 设置表格列不可重排 // 获得表格头的单元格对象 DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) tableHeader .getDefaultRenderer(); // 设置单元格内容(即列名)居中显示 defaultRenderer .setHorizontalAlignment(DefaultTableCellRenderer.CENTER); return tableHeader; } // 表格列值居中显示 @Override public TableCellRenderer getDefaultRenderer(Class<?> columnClass) { DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) super .getDefaultRenderer(columnClass); defaultRenderer .setHorizontalAlignment(DefaultTableCellRenderer.CENTER); return defaultRenderer; } // 表格行只可单选 @Override public ListSelectionModel getSelectionModel() { ListSelectionModel selectionModel = super.getSelectionModel(); selectionModel .setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return selectionModel; } // 用来设置表格的选中行 @Override public void setRowSelectionInterval(int fromRow, int toRow) {// 重构父类的方法 super.setRowSelectionInterval(fromRow, toRow); } // 用来设置表格的唯一选中行 public void setRowSelectionInterval(int row) {// 通过重载实现自己的方法 setRowSelectionInterval(row, row); } } class FixedColumnTableModel extends AbstractTableModel { public int getColumnCount() {// 返回固定列的数量 return fixedColumn; } public int getRowCount() {// 返回行数 return tableValueV.size(); } public Object getValueAt(int rowIndex, int columnIndex) {// 返回指定单元格的值 return tableValueV.get(rowIndex).get(columnIndex); } @Override public String getColumnName(int columnIndex) {// 返回指定列的名称 return tableColumnV.get(columnIndex); } } class FloatingColumnTableModel extends AbstractTableModel { public int getColumnCount() {// 返回可移动列的数量 return tableColumnV.size() - fixedColumn;// 需要扣除固定列的数量 } public int getRowCount() {// 返回行数 return tableValueV.size(); } public Object getValueAt(int rowIndex, int columnIndex) {// 返回指定单元格的值 return tableValueV.get(rowIndex).get(columnIndex + fixedColumn);// 需要为列索引加上固定列的数量 } @Override public String getColumnName(int columnIndex) {// 返回指定列的名称 return tableColumnV.get(columnIndex + fixedColumn);// 需要为列索引加上固定列的数量 } } class MListSelectionListener implements ListSelectionListener { boolean isFixedColumnTable = true; // 默认由选中固定列表格中的行触发 public MListSelectionListener(boolean isFixedColumnTable) { this.isFixedColumnTable = isFixedColumnTable; } public void valueChanged(ListSelectionEvent e) { if (isFixedColumnTable) { // 由选中固定列表格中的行触发 int selectedRow = fixedColumnTable.getSelectedRow(); // 获得固定列表格中的选中行 floatingColumnTable.setRowSelectionInterval(selectedRow); // 同时选中可移动列表格中的选中行 } else { // 由选中可移动列表格中的行触发 int selectedRow = floatingColumnTable.getSelectedRow(); // 获得可移动列表格中的选中行 fixedColumnTable.setRowSelectionInterval(selectedRow); // 同时选中固定列表格中的选中行 } } } }
发表评论
-
酒店管理系统数据库表(swing)
2011-04-28 23:59 1603菜单表: 菜系表: 台号表: 用户表: ... -
酒店管理系统的dao层数据库查询语句(swing)
2011-04-28 21:40 1004这个鬼东西是用jdbc来写的 package com.mw ... -
酒店管理系统之登录界面(swing)
2011-04-28 21:31 2490package com.mwq.frame; i ... -
酒店管理系统总界面(swing)
2011-04-28 21:10 1812package com.mwq.frame; imp ... -
酒店管理系统之年结帐界面(swing)
2011-04-28 21:06 1082package com.mwq.frame.check_o ... -
酒店管理系统之月结帐界面(swing)
2011-04-28 21:04 791package com.mwq.frame.check_o ... -
酒店管理系统之用户管理界面(swing)
2011-04-28 20:59 2061package com.mwq.frame.user; ... -
酒店管理系统之修改密码界面(swing)
2011-04-28 20:57 1313package com.mwq.frame.user; ... -
酒店管理系统之菜系管理界面(swing)
2011-04-28 20:55 916package com.mwq.frame.manage ... -
酒店管理系统之菜品界面(swing)
2011-04-28 20:49 1095package com.mwq.frame.manag ...
相关推荐
酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。依据餐饮行业的特点,本系统实现以下目标: 操作简单方便、界面简洁大方。 方便快捷的开台点菜功能。 智能化定位...
Java+Swing+Mysql实现酒店管理系统,系统经多次测试,运行无误,大家放心下载。
javaswing酒店管理系统源代码+数据库模型 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。依据餐饮行业的特点,本系统实现以下目标: 操作简单方便、界面简洁大方。 ...
swing酒店管理系统源码 java swing 酒店管理系统源码 swing酒店管理系统源码 java swing 酒店管理系统源码 swing酒店管理系统源码 java swing 酒店管理系统源码
(java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业...
可以实现增删改查 数据库是MySQL 导入eclipse即可运行成功
java(Swing)编写的酒店管理系统,小程序,可用于毕业设计
酒店管理系统 java swing,一款用java 窗体做的应用程序
酒店管理系统后台,供管理员管理系统之用 客房类型设置 客房设置 操作员设置 酒店管理系统系统供酒店所有工作人员使用前台 入住登记: 登记信息 客人信息 费用信息 结账: 通过房间号码进行退房结账 预订信息管理 ...
酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。依据餐饮行业的特点,本系统实现以下目标: 操作简单方便、界面简洁大方。 方便快捷的开台点菜功能。 智能化...
酒店swing管理系统
项目是使用Java swing开发,可实现基础数据维护用户登录、系统首页酒店信息管理、主要模块是开房管理、退房管理、房间信息管理、顾客信息管理等功能。界面设计比较简介、适合作为Java课设设计以及学习技术使用。
java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing mysql实现的酒店管理系统项目源码.zip java swing ...
基于Java swing带GUI界面的酒店管理系统源码+数据库(95分以上课设).zip 代码完整下载即用无需修改。 基于Java swing带GUI界面的酒店管理系统源码+数据库(95分以上课设).zip 代码完整下载即用无需修改。基于...
用JavaSwing做的酒店管理系统,JDBC+SQLServer,如果你使用的是Mysql数据库,可以先下载SQLServer管理工具,然后再导入到mysql管理工具中,如有不明白可以评论,我会回复!
酒店管理系统后台,供管理员管理系统之用 客房类型设置 客房设置 员工信息管理 酒店管理系统系统供酒店所有工作人员使用前台 登记信息 客虎信息 客户订单信息管理 客户入住信息管理 结账: 通过房间号码进行退房结账 ...
java课设之征名管理系统,用swing做的全部界面,内含完整程序源码以及详细注释,课程设计要求,软件需求 分析说明书,课程设计总结报告,活动图、软件原型、用例图的全部原图,已生成jar包和javadoc文档,软件需求...
主要用的是java swing 和数据库2005
java 图形用户界面酒店管理系统酒店管理系统酒店管理系统酒店管理系统酒店管理系统酒店管理系统酒店管理系统
基础的数据库课程设计代码,不是很完善,什么都不懂的小白看看可以 基础的数据库课程设计代码,不是很完善,什么都不懂的小白看看可以 基础的数据库课程设计代码,不是很完善,什么都不懂的小白看看可以 ...