参考别人的项目 https://github.com/rememberber/WePush
根据实际情况延续原本框架前端样式 开发出这个点餐系统
用到了 springMVC mybaits 数据库 mysql
swing 刚接触 界面比较难处理 菜单及商品列表都是固定好,用到 几个比较多的JTable列表,JTextField输入框,JButton按钮,JLabel标签控件
说下 table 如何实现
String[] headerNames = {"id","点餐号", "支付金额", "成本金额"//,"优惠金额", "会员优惠金额" ,"数量","支付类型","点餐时间"}; DefaultTableModel tableModel= new DefaultTableModel(null, headerNames); JTable dayTable=MainWindow.mainWindow.getDayTable();
dcm.getColumn(0).setMinWidth(0); //将第一列的最小宽度、最大宽度都设置为0,就看不到了 dcm.getColumn(0).setMaxWidth(0);
//清除列表数据
while(tableModel.getRowCount()>0){ tableModel.removeRow(tableModel.getRowCount()-1); }//加入列表数据
Integer countSum=0; Double payMoneySum=0d; Double costMoneySum=0d; Double profitMoneySum=0d; for(DiningRecord dr :ls) { Vector rowData = new Vector(); rowData.add(dr.getId()); rowData.add(dr.getDiningNo()); rowData.add(dr.getPayMoney()); rowData.add(dr.getCostMoney()); //rowData.add(dr.getDiscountMoney()); //rowData.add(dr.getMemberDiscountMoney()); rowData.add(dr.getCount()); rowData.add(payTypeEnums.typeOf(dr.getPayType()).getMessage()); rowData.add(formatter1.format(dr.getCreateTime())); tableModel.addRow(rowData); countSum+=dr.getCount(); payMoneySum+=dr.getPayMoney(); costMoneySum+=dr.getCostMoney(); profitMoneySum+=dr.getPayMoney()-dr.getCostMoney(); } Vector rowData = new Vector(); rowData.add(-1); rowData.add("当日业绩 合计:"); rowData.add(payMoneySum); rowData.add(costMoneySum); rowData.add(countSum); rowData.add("利润:"); rowData.add(profitMoneySum); tableModel.addRow(rowData);
效果第三张图的第一个列表
还有就是打印小票和标签的部分代码
通过系统设置的对应打印机名 进行选择相应打印机
String printerName= ConstantsUI.TICKET_PRINT_NAME; if(!StringUtils.isEmpty(printerName)) { //Book 类提供文档的表示形式,该文档的页面可以使用不同的页面格式和页面 painter Book book = new Book(); //要打印的文档 //PageFormat类描述要打印的页面大小和方向 PageFormat pf = new PageFormat(); //初始化一个页面打印对象 pf.setOrientation(PageFormat.PORTRAIT); //设置页面打印方向,从上往下,从左往右 //设置打印纸页面信息。通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。 Paper paper = new Paper(); paper.setSize(230,30000);// 纸张大小 paper.setImageableArea(0,0,230,30000);// A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72 pf.setPaper(paper); book.append(salesTicket,pf); PrinterJob job = PrinterJob.getPrinterJob(); //获取打印服务对象 job.setPageable(book); //设置打印类 HashAttributeSet hs = new HashAttributeSet(); hs.add(new PrinterName(printerName,null));//根据名字选择相应打印机 PrintService[] pss = PrintServiceLookup.lookupPrintServices(null, hs); if (pss.length == 0) { System.out.println("无法找到打印机:" + printerName); return; } job.setPrintService(pss[0]); job.print(); //开始打印
界面如下