【1.项目背景】随着互联网时代的飞速发展,人们的生活得到了便利,生活质量得到了提高,外卖系统应运而生。人们也喜欢享受“足不出户就回家”的待遇,推动了网络订餐行业的快速发展。[2。项目目标】1.设计一个带文字和图片展示的app外卖系统。通过选择一种或多种食物,每种食物可以选择一份或多份。点击结算后,将计算总价。登记。2.实现标题文字滚动和颜色时序变化。3、实现花多少免运费,花多少满减。[3.项目实施】使用eclipse软件开发,先上传效果图,如下图。可以看到界面上显示的有文字和图片。通过选择一种或多种食物,每种食物可以选择一种或多种食物,结算功能,标题文本滚动和颜色变化功能。接下来小编就带大家进行具体的实现,具体的实现步骤如下。[4.实现步骤】1.首先实现外卖系统购物车的窗口publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubTakeoutt=newTakeout();t.setTitle("饶阳外卖");t.setSize(720,550);t.setVisible(true);}使用new关键字创建Takeout类;setTitle表示设置界面的标题;setSize(width,height)表示窗体的大小;setVisible(trueorfalse)表示表单是否可见;添加文字实现1.使用的组件是JPanel和JLabel;2、添加Takeout类的成员变量;publicclassTakeouttextendsJFrame{//成员变量privateJPanelpanel01=newJPanel();privateJLabellabel01=newJLabel("欢迎来到饶阳外卖系统!");3.增加文字说明;外卖类构造函数:Takeout(){label01.setFont(newFont("黑体",Font.PLAIN,30));label01.setForeground(Color.BLUE);panel01.add(label01);panel01.setOpaque(false);//设置透明度this.setLayout(newBorderLayout());this.add(panel01,BorderLayout.NORTH);this.getContentPane().setBackground(c);4.Text(label01)设置显示效果1)setFont(newFont(Stringfont,intstyle,intfontsize));字体:TimesRoman、Courier、Arial等;style:三个常量lFont.PLAIN、Font.BOLD、Font.ITALIC;fontsize:字体大小(磅数);2)setForegound设置前景色;3)setOpaque设置控件透明(true或false);4)布局管理器的BorderLayout(边界布局);边界布局管理器将容器的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH,依次对应:上北(NORTH)、下南(SOUTH)、左西(WEST)),右东(EAST),中(CENTER)。5.边界布局特点1)元件可以放置在这五个位置中的任何一个位置。如果未指定位置,则默认位置为CENTER。2)南北位置控件各占一行,控件的宽度会自动占满整行。东、西、中各占一行;如果东西南北位置都没有控件,中间的控件会自动填满整个屏幕。如果东、西、南、北任意位置没有控制,中间位置的控制会主动占据没有控制的位置。3)它是表单、框架的内容窗格、对话框等的默认布局。6.getContentPane.setBackground(c)初始化一个容器。设置背景RGB颜色,需要在成员变量中定义privateColorc=newColor(197,228,251);3、添加食物文字、数量(按钮)和图片,需要添加JPanel、JCheckBox、JButton、JLabel等。1.添加Takeout类的成员变量privateJPanelpanel02=newJPanel();privateJCheckBoxcheck[]=newJCheckBox[9];//文字(多选框)privateJButtonamount[]=newJButton[9];//数量(按钮)privateJLabelfood[]=newJLabel[9];//食物图片privateintnum[]=newint[9];//数量数组2.在Takeout类的构造函数中设置组件的属性参考代码Takeout(){...check[0]=newJCheckBox("冰淇淋3.0元",false);check[1]=newJCheckBox("薯条6.0元",false);check[2]=newJCheckBox("爆米花8.0元",false);check[3]=newJCheckBox("热狗10.0元",false);check[4]=newJCheckBox("汉堡11.0元",false);check[5]=newJCheckBox("巨无霸16.0元",false);check[6]=newJCheckBox("可乐6.0元",false);check[7]=newJCheckBox("果汁8.0元",false);check[8]=newJCheckBox("啤酒6.0元",false);for(inti=0;i<9;i++){amount[i]=newJButton("1份");food[i]=newJLabel(newImageIcon("image//food"+(i+1)+".jpg"));检查[我]。setOpaque(false);panel02.add(check[i]);panel02.add(amount[i]);panel02.add(food[i]);num[i]=1;amount[i].addActionListener(my);}panel02.setOpaque(false);this.add(panel02,BorderLayout.CENTER);4.添加状态信息:JTextArea等1、添加Takeout类的成员变量privateJTextArealist=newJTextArea(10,20);privateStringstr="";2。在Takeout类的构造函数中设置组件的属性。参考代码Takeout(){...list.setText("Status:Nomealselected!");list.setBackground(c);panel02.add(list);}5、添加按钮和总价框:JPanel、JButton,JLabel,JTextField等1.添加Takeout类的成员变量;privateJTextFieldtext01=newJTextField(10);privatedoublea[]=newdouble[9];//食物单价privatedoubletotal=0;//总价2.在Takeout类的构造函数中设置Component属性参考代码Takeout(){...panel03.add(btn_ok);panel03.add(btn_cancel);panel03.add(label02);panel03.add(text01);panel03.add(label03);this.add(panel03,BorderLayout.SOUTH);panel03.setOpaque(假);a[0]=3.0;a[1]=6.0;a[2]=8.0;a[3]=10.0;a[4]=11.0;a[5]=16.0;a[6]=6.0;一个[7]=8.0;a[8]=6.0;六、事件处理定义事件处理类,实现事件监听器1、在成员变量中添加privateMyListenermy=newMyListener();2.在Takeout()中添加btn_ok.addActionListener(my);btn_cancel.addActionListener(my);3.添加事件监听器MyListener(自己命名)privateclassMyListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstub//添加事件处理代码for(inti=0;i<9;i++){if(e.getSource()==amount[i]){if(num[i]<9)num[i]++;elsenum[i]=0;amount[i].setText(num[i]+"part");}}if(e.getSource()==btn_ok){total=0;str="";for(inti=0;i<9;i++){if(check[i].isSelected()==true){total=total+a[i]*num[i];str=str+check[i].getText()+""+amount[i].getText()+"\n";}}text01.setText(""+total);list.setText("Status:Mealselected:\n"+str+"\n");}上面e.getSource()==btn_cancel代码完成清零功能【5.思考题1】由于业务需要,外卖系统的商家现在要求每笔订单收取5元的配送费。活动期间,订单满30元免运费,满100元立减10元。程序应该如何修改?1.在成员变量中加入如下代码。privatefinalintFEE=5;//运费privateJLabellabel03=newJLabel("订单满30包邮,满100减10");2.在Takeout()类代码的构造函数中加入如下if(e.getSource()==btn_ok)。if(total<30){label03.setText("不够"+(30-total)+"免运费,不够"+(100-total)+"满100减10");total=total+FEE;str=str+"送货费5元";}elseif(total<100){//免送货,不参加满100-10label03.setText("免运费,还差"+(100-total)+"满100minus10");}else{label03.setText("包邮,参与满100减10,"+(total)+"-10");total=total-FEE-FEE;}【六、思考题2]实现“欢迎来到饶阳外卖系统!”文本滚动和颜色时间变化。程序应该如何修改?1.在成员变量中添加如下代码。privateColorcolor[]=newColor[]{Color.BLACK,Color.RED,Color.BLUE,Color.LIGHT_GRAY,Color.YELLOW,Color.GREEN,Color.MAGENTA};privateTimertimer;//timerprivateintcolorIndex=0;//当前的颜色序号2.在Takeout()类的构造函数中的if(e.getSource()==btn_ok)中添加如下代码。取出(){。....addtimer=newTimer(500,newTimerListener());//时间间隔(毫秒),定时器监听器(要做的事情)timer.start();//启动定时器}3.实现这个TimerListener()函数。classTimerListenerimplementsActionListener{//定时器监听器@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstub//时间到了,做什么:colorIndex++;//01234567%7=08%7=19%7=2label01.setForeground(color[colorIndex/4%color.length]);Stringtemp=label01.getText();label01.setText(temp.substring(1,temp.length())+temp.substring(0,1));//子字符串(i,j)截取序号i(含)到序号j(不含)i~j-1}}以上代码可以实现文字滚动和颜色变化。本项目主要采用JavaSwing图形界面开发。Swing包括图形用户界面设备,而Java为我们提供了Timer来实现定时任务。它主要涉及两个类:Timer和TimerTask。[七。摘要】1.主要介绍JPanel、JCheckBox、JLabel、JButton、JTextField等组件的基本使用,背景色的添加,图片图标的设置,以及相应的事件处理。2、添加事件处理函数的难点在于使用和理解构造函数和内部类的创建。本文转载自微信公众号“IT分享之家”,可通过以下二维码关注。转载本文请联系IT分享之家公众号。
