onething-diancan Java swing点餐系统 花1-2周时间认识swing从别人的项目下改一下

参考别人的项目  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(); //开始打印


界面如下











©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页