kfc.java
package xust.edu.cn.view;
import xust.edu.cn.action.checkListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class KFC extends JFrame {
private JLabel jl;
private JPanel kfcPanel;
private JPanel[] jp; //5个选项卡的JPanel
private JButton jCheck,jExit;
private JSpinner[] deliverSpinner;
//5个选项卡里面的JSpinner
private JSpinner[] jsp1;
private JSpinner[] jsp2;
private JSpinner[] jsp3;
private JSpinner[] jsp4;
private JSpinner[] jsp5;
//5个选型卡里面的Jpanel
private JPanel[] jp1;
private JPanel[] jp2;
private JPanel[] jp3;
private JPanel[] jp4;
private JPanel[] jp5;
private JTabbedPane jt;
class goodsPanel extends JPanel{
private String str;
public goodsPanel(String str){
this.str = str;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon icon = new ImageIcon(str);
Image image = icon.getImage();
g.drawImage(image,0,0,this.getWidth()-12,this.getHeight()-8,this);
}
}
public KFC(){
this.init();
this.setLayouts();
this.setComponents();
this.addKFC();
this.setKFC();
this.deliverSpinner();
this.addListener();
}
public void init() {
//创建选项卡
jt = new JTabbedPane(SwingConstants.LEFT);
//5个选项卡页面,所以创建5个panel
jp = new JPanel[5];
jp[0] = new JPanel(new GridLayout(2,2));
jp[1] = new JPanel(new GridLayout(2,2));
jp[2] = new JPanel(new GridLayout(2,2));
jp[3] = new JPanel(new GridLayout(2,2));
jp[4] = new JPanel(new GridLayout(2,2));
kfcPanel = new JPanel(){
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon icon = new ImageIcon("src//back.jpg");
Image image = icon.getImage();
g.drawImage(image,0,0,kfcPanel.getWidth(),kfcPanel.getHeight(),kfcPanel);
}
};
//设置选项卡内容
jt.add("当季主打", jp[0]);
jt.addTab("桶",jp[1]);
jt.addTab("美味汉堡",jp[2]);
jt.addTab("鸡翅/鸡排",jp[3]);
jt.addTab("甜品",jp[4]);
//初始化第一个选项卡JPanel
jp1 = new JPanel[4];
jp1[0] = new goodsPanel("src//当季主打//1.jpg");
jp1[1] = new goodsPanel("src//当季主打//2.jpg");
jp1[2] = new goodsPanel("src//当季主打//3.jpg");
jp1[3] = new goodsPanel("src//当季主打//4.jpg");
//初始化第二个选项卡JPanel
jp2 = new JPanel[4];
jp2[0] = new goodsPanel("src//桶//1.jpg");
jp2[1] = new goodsPanel("src//桶//2.jpg");
jp2[2] = new goodsPanel("src//桶//3.jpg");
jp2[3] = new goodsPanel("src//桶//4.jpg");
//初始化第三个选项卡JPanel
jp3 = new JPanel[4];
jp3[0] = new goodsPanel("src//美味汉堡//1.jpg");
jp3[1] = new goodsPanel("src//美味汉堡//2.jpg");
jp3[2] = new goodsPanel("src//美味汉堡//3.jpg");
jp3[3] = new goodsPanel("src//美味汉堡//4.jpg");
//初始化第四个选项卡JPanel
jp4 = new JPanel[4];
jp4[0] = new goodsPanel("src//鸡翅、鸡排//1.jpg");
jp4[1] = new goodsPanel("src//鸡翅、鸡排//2.jpg");
jp4[2] = new goodsPanel("src//鸡翅、鸡排//3.jpg");
jp4[3] = new goodsPanel("src//鸡翅、鸡排//4.jpg");
//初始化第五个选项卡JPanel
jp5 = new JPanel[4];
jp5[0] = new goodsPanel("src//甜品//1.jpg");
jp5[1] = new goodsPanel("src//甜品//2.jpg");
jp5[2] = new goodsPanel("src//甜品//3.jpg");
jp5[3] = new goodsPanel("src//甜品//4.jpg");
//初始化5个选项卡的SpinnerModel
SpinnerModel[] model1 = new SpinnerModel[4];
SpinnerModel[] model2 = new SpinnerModel[4];
SpinnerModel[] model3 = new SpinnerModel[4];
SpinnerModel[] model4 = new SpinnerModel[4];
SpinnerModel[] model5 = new SpinnerModel[4];
//初始化第一个选项卡页面的SpinnerNumberModel和JSpinner
model1[0] = new SpinnerNumberModel(0,0,10,1);
model1[1] = new SpinnerNumberModel(0,0,10,1);
model1[2] = new SpinnerNumberModel(0,0,10,1);
model1[3] = new SpinnerNumberModel(0,0,10,1);
jsp1 = new JSpinner[4];
jsp1[0] = new JSpinner(model1[0]);
jsp1[0].setBounds(150,190,35,25);
jsp1[1] = new JSpinner(model1[1]);
jsp1[1].setBounds(150,190,35,25);
jsp1[2] = new JSpinner(model1[2]);
jsp1[2].setBounds(150,190,35,25);
jsp1[3] = new JSpinner(model1[3]);
jsp1[3].setBounds(150,190,35,25);
//初始化第二个选项卡页面的SpinnerNumberModel和JSpinner
model2[0] = new SpinnerNumberModel(0,0,10,1);
model2[1] = new SpinnerNumberModel(0,0,10,1);
model2[2] = new SpinnerNumberModel(0,0,10,1);
model2[3] = new SpinnerNumberModel(0,0,10,1);
jsp2 = new JSpinner[4];
jsp2[0] = new JSpinner(model2[0]);
jsp2[0].setBounds(150,190,35,25);
jsp2[1] = new JSpinner(model2[1]);
jsp2[1].setBounds(150,190,35,25);
jsp2[2] = new JSpinner(model2[2]);
jsp2[2].setBounds(150,190,35,25);
jsp2[3] = new JSpinner(model2[3]);
jsp2[3].setBounds(150,190,35,25);
//初始化第三个选项卡页面的SpinnerNumberModel和JSpinner
model3[0] = new SpinnerNumberModel(0,0,10,1);
model3[1] = new SpinnerNumberModel(0,0,10,1);
model3[2] = new SpinnerNumberModel(0,0,10,1);
model3[3] = new SpinnerNumberModel(0,0,10,1);
jsp3 = new JSpinner[4];
jsp3[0] = new JSpinner(model3[0]);
jsp3[0].setBounds(150,190,35,25);
jsp3[1] = new JSpinner(model3[1]);
jsp3[1].setBounds(150,190,35,25);
jsp3[2] = new JSpinner(model3[2]);
jsp3[2].setBounds(150,190,35,25);
jsp3[3] = new JSpinner(model3[3]);
jsp3[3].setBounds(150,190,35,25);
//初始化第四个选项卡页面的SpinnerNumberModel和JSpinner
model4[0] = new SpinnerNumberModel(0,0,10,1);
model4[1] = new SpinnerNumberModel(0,0,10,1);
model4[2] = new SpinnerNumberModel(0,0,10,1);
model4[3] = new SpinnerNumberModel(0,0,10,1);
jsp4 = new JSpinner[4];
jsp4[0] = new JSpinner(model4[0]);
jsp4[0].setBounds(150,190,35,25);
jsp4[1] = new JSpinner(model4[1]);
jsp4[1].setBounds(150,190,35,25);
jsp4[2] = new JSpinner(model4[2]);
jsp4[2].setBounds(150,190,35,25);
jsp4[3] = new JSpinner(model4[3]);
jsp4[3].setBounds(150,190,35,25);
//初始化第五个选项卡页面的SpinnerNumberModel和JSpinner
model5[0] = new SpinnerNumberModel(0,0,10,1);
model5[1] = new SpinnerNumberModel(0,0,10,1);
model5[2] = new SpinnerNumberModel(0,0,10,1);
model5[3] = new SpinnerNumberModel(0,0,10,1);
jsp5 = new JSpinner[4];
jsp5[0] = new JSpinner(model5[0]);
jsp5[0].setBounds(150,190,35,25);
jsp5[1] = new JSpinner(model5[1]);
jsp5[1].setBounds(150,190,35,25);
jsp5[2] = new JSpinner(model5[2]);
jsp5[2].setBounds(150,190,35,25);
jsp5[3] = new JSpinner(model5[3]);
jsp5[3].setBounds(150,190,35,25);
jCheck = new JButton();
jExit = new JButton();
}
public void setLayouts(){
this.setLayout(null);
kfcPanel.setLayout(null);
for(int i = 0;i<4;i++){
jp1[i].setLayout(null);
jp2[i].setLayout(null);
jp3[i].setLayout(null);
jp4[i].setLayout(null);
jp5[i].setLayout(null);
}
}
public void addKFC(){
this.add(kfcPanel);
this.add(jt);
//加入按钮
kfcPanel.add(jCheck);
kfcPanel.add(jExit);
//把选项卡内部的panel添加进去
//第一个选项卡
jp[0].add(jp1[0]);
jp[0].add(jp1[1]);
jp[0].add(jp1[2]);
jp[0].add(jp1[3]);
//第二个选项卡
jp[1].add(jp2[0]);
jp[1].add(jp2[1]);
jp[1].add(jp2[2]);
jp[1].add(jp2[3]);
//第三个选项卡
jp[2].add(jp3[0]);
jp[2].add(jp3[1]);
jp[2].add(jp3[2]);
jp[2].add(jp3[3]);
//第四个选项卡
jp[3].add(jp4[0]);
jp[3].add(jp4[1]);
jp[3].add(jp4[2]);
jp[3].add(jp4[3]);
//第五个选项卡
jp[4].add(jp5[0]);
jp[4].add(jp5[1]);
jp[4].add(jp5[2]);
jp[4].add(jp5[3]);
//把JSpinner添加到Jpanel里
//第一页选项卡
jp1[0].add(jsp1[0]);
jp1[1].add(jsp1[1]);
jp1[2].add(jsp1[2]);
jp1[3].add(jsp1[3]);
//第二页选项卡
jp2[0].add(jsp2[0]);
jp2[1].add(jsp2[1]);
jp2[2].add(jsp2[2]);
jp2[3].add(jsp2[3]);
//第三页选项卡
jp3[0].add(jsp3[0]);
jp3[1].add(jsp3[1]);
jp3[2].add(jsp3[2]);
jp3[3].add(jsp3[3]);
//第四页选项卡
jp4[0].add(jsp4[0]);
jp4[1].add(jsp4[1]);
jp4[2].add(jsp4[2]);
jp4[3].add(jsp4[3]);
//第五页选项卡
jp5[0].add(jsp5[0]);
jp5[1].add(jsp5[1]);
jp5[2].add(jsp5[2]);
jp5[3].add(jsp5[3]);
}
public void setComponents(){
kfcPanel.setBounds(0,0,500,100);
jt.setBounds(0,100,500,470);
//设置按钮
jCheck.setBounds(330,82,70,18);
jExit.setBounds(420,82,70,18);
//设置按钮图片
ImageIcon iconCheck = new ImageIcon("src//按钮图片//1.jpg");
ImageIcon iconCheckStop = new ImageIcon("src//按钮图片//2.jpg");
iconCheck.setImage(iconCheck.getImage().getScaledInstance(jCheck.getWidth(), jCheck.getHeight(),
Image.SCALE_DEFAULT));
iconCheckStop.setImage(iconCheckStop.getImage().getScaledInstance(jCheck.getWidth(), jCheck.getHeight(),
Image.SCALE_DEFAULT));
jCheck.setIcon(iconCheck);
jCheck.setRolloverIcon(iconCheckStop);
jCheck.setFont(new Font("黑体",Font.BOLD,12));
jCheck.setForeground(Color.darkGray);
jCheck.setHorizontalTextPosition(JButton.CENTER);
jCheck.setText("结账");
jExit.setIcon(iconCheck);
jExit.setRolloverIcon(iconCheckStop);
jExit.setFont(new Font("黑体",Font.BOLD,12));
jExit.setForeground(Color.darkGray);
jExit.setHorizontalTextPosition(JButton.CENTER);
jExit.setText("退出");
}
public void deliverSpinner(){
//把所有JSpinner存起来
deliverSpinner = new JSpinner[20];
for(int i = 0;i<4;i++){
deliverSpinner[i] = jsp1[i];
deliverSpinner[i+4] = jsp2[i];
deliverSpinner[i+8] = jsp3[i];
deliverSpinner[i+12] = jsp4[i];
deliverSpinner[i+16] = jsp5[i];
}
}
public void addListener(){
jCheck.addActionListener(new checkListener(this));
jExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jExit){
dispose();
}
}
});
}
public void setKFC(){
this.setTitle("KFC点餐");
this.setSize(500,600);
this.setLocation(450,50);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public JButton getjCheck(){return jCheck;}
public JSpinner[] getDeliverSpinner(){return deliverSpinner;}
public static void main(String[] args) {
KFC kfc = new KFC();
}
}
checkDialog.java
package xust.edu.cn.view;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.DecimalFormat;
public class checkDialog extends JFrame {
private JDialog jdg;
private JPanel jp;
private JPanel[] littlePanel;
private KFC jFrameKFC;
private JLabel[] jlb;
private JTextField jtf;
private JButton jb_pay,jb_exit;
private JTextArea jt;
private JScrollPane jsp;
private JCheckBox jcb;
private checkDialog deliverCheckDialog;
private double fee = 0.0; //消费额
private double pay = 0.0; //支付额
private double returnMoney = 0.0; //找零
public checkDialog(KFC jfKFC){
jFrameKFC = jfKFC;
deliverCheckDialog = this;
this.init();
this.setLayouts();
this.setComponents();
this.addActionListeners();
this.addComponent();
this.setCheckDialog();
}
public void init(){
jdg = new JDialog(jFrameKFC,"结账 页面",true);
jlb = new JLabel[3];
jlb[0] = new JLabel();
jlb[1] = new JLabel();
jlb[2] = new JLabel();
jtf = new JTextField();
jcb = new JCheckBox();
jt = new JTextArea("尊敬的用户,您选购的商品有:\n");
jsp = new JScrollPane(jt);
jb_pay = new JButton();
jb_exit = new JButton();
jp = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
ImageIcon icon = new ImageIcon("src//check.jpg");
Image image = icon.getImage();
g.drawImage(image,0,0,this.getWidth(),this.getHeight(),this);
}
};
littlePanel = new JPanel[3];
littlePanel[0] = new JPanel();
littlePanel[1] = new JPanel();
littlePanel[2] = new JPanel();
}
public void setLayouts(){
jp.setLayout(new GridLayout(3,1));
littlePanel[0].setLayout(null);
littlePanel[1].setLayout(new GridLayout(1,1));
littlePanel[2].setLayout(new GridLayout(1,2));
}
public void setComponents(){
this.outGoods();
jlb[0].setText("您本次消费金额为:"+fee);
jlb[1].setText("是否使用优惠券");
jlb[2].setText("输入支付金额:");
jb_pay.setText("付钱");
jb_exit.setText("再逛逛");
jlb[0].setBounds(10,10,150,20);
jlb[1].setBounds(10,35,110,20);
jcb.setBounds(110,35,20,20);
jlb[2].setBounds(10,60,100,20);
jtf.setBounds(110,60,40,20);
}
public void addComponent(){
jdg.add(jp);
jp.add(littlePanel[0]);
jp.add(littlePanel[1]);
jp.add(littlePanel[2]);
littlePanel[0].add(jlb[0]);
littlePanel[0].add(jlb[1]);
littlePanel[0].add(jcb);
littlePanel[0].add(jlb[2]);
littlePanel[0].add(jtf);
littlePanel[1].add(jsp);
littlePanel[2].add(jb_pay);
littlePanel[2].add(jb_exit);
}
public void setCheckDialog(){
jdg.setSize(200,350);
jdg.setResizable(false);
jdg.setLocationRelativeTo(jFrameKFC);
jdg.setVisible(true);
jp.setSize(jdg.getWidth(),jdg.getHeight());
jsp.setVerticalScrollBar(new JScrollBar());
jsp.setVisible(true);
}
public void outGoods(){
String[] goodsName = {"19.9元葡式蛋挞5只 ","万圣节日辣堡桶S " , "翅桶辣堡奥堡套餐S ","万圣节日劲堡桶S ",
"万圣节日辣堡桶S","超级翅桶 ","翅桶辣堡奥堡套餐S ","万圣节日劲堡桶S",
"塔可奥堡双人餐S ","嫩牛五方","嫩牛五方辣翅双人餐S ","卷堡S三人餐",
"(六块)吮指原味鸡 ","热辣香骨鸡","原味鸡波纹霸薯套餐B","二块香辣鸡翅",
"原味圣代(巧克力酱)","原味圣代(草莓酱)","华夫礼盒(3巧克力)","幻黑芝士冰淇淋杯"};
double[] money = {19.9,67.0,89.0,67.0,
67.0,79.0,89.0,67.0,
65.0,18.0,69.0,98.0,
56.0,11.0,37.5,11.0,
10.5,10.0,33.0,12.0};
for(int i = 0;i<20;i++){
Object object = jFrameKFC.getDeliverSpinner()[i].getValue();
int count = Integer.parseInt(String.valueOf(object));
if(count>0){
jt.append(goodsName[i]+"*"+count+"\n");
fee += count*money[i];
}
}
fee = Double.valueOf(new DecimalFormat("#.0").format(fee));
}
public void addActionListeners(){
jtf.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
super.keyTyped(e);
int k = e.getKeyChar();
if(k>=KeyEvent.VK_0 && k<=KeyEvent.VK_9){
}else{
e.consume();
}
}
});
jb_pay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb_pay && jtf.getText()!=null){
pay = Double.valueOf(jtf.getText());
double tempFee = fee;
if(jcb.isSelected()==true){
tempFee = fee*0.8;
}
if (pay < tempFee) {
ImageIcon icon = new ImageIcon("src//tip.jpg");
icon.setImage(icon.getImage().getScaledInstance(100, 100, Image.SCALE_DEFAULT));
JOptionPane.showMessageDialog(jdg, "您输入的金额过少,请重新输入❤", "温馨提示", JOptionPane.INFORMATION_MESSAGE, icon);
} else {
jdg.dispose();
returnMoney = pay - tempFee;
returnMoney = Double.valueOf(new DecimalFormat("#.0").format(returnMoney));
new inVoice(deliverCheckDialog);
}
}
}
});
jb_exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb_exit){
jdg.dispose();
}
}
});
}
public JDialog getJdg(){return jdg;}
public JTextArea getJt(){return jt;}
public double getFee(){return fee;}
public double getPay(){return pay;}
public double getReturnMoney(){return returnMoney;}
}
inVoice
package xust.edu.cn.view;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class inVoice extends JDialog {
private checkDialog checkDialog;
private JPanel jbigPanel;
private JLabel[] jlb;
private JScrollPane jsp;
private JTextArea jt;
private JButton jb;
public inVoice(checkDialog jdg){
checkDialog = jdg;
this.init();
this.addComponents();
this.setComponent();
this.setLayouts();
this.addAction();
this.setInVoice();
}
public void init(){
jbigPanel = new JPanel();
jlb = new JLabel[3];
jlb[0] = new JLabel();
jlb[1] = new JLabel();
jlb[2] = new JLabel();
jt = checkDialog.getJt();
jsp = new JScrollPane(jt);
jb = new JButton();
}
public void setComponent(){
jbigPanel.setSize(checkDialog.getWidth(),checkDialog.getHeight());
jlb[0].setText("您本次的消费总额为:"+checkDialog.getFee()+"元");
jlb[1].setText("您支付金额为"+checkDialog.getPay()+"元");
jlb[2].setText("找您零钱为:"+checkDialog.getReturnMoney()+"元");
jb.setText("退出");
jlb[0].setBounds(10,10,200,20);
jlb[1].setBounds(10,35,140,20);
jlb[2].setBounds(10,60,140,20);
jsp.setBounds(10,90,200,50);
jb.setBounds(10,150,70,30);
}
public void setLayouts(){
jbigPanel.setLayout(null);
}
public void addComponents(){
this.add(jbigPanel);
jbigPanel.add(jlb[0]);
jbigPanel.add(jlb[1]);
jbigPanel.add(jlb[2]);
jbigPanel.add(jsp);
jbigPanel.add(jb);
}
public void setInVoice(){
this.setTitle("谢谢惠顾❤");
this.setModal(true);
this.setSize(230,230);
this.setResizable(false);
this.setLocationRelativeTo(checkDialog);
this.setVisible(true);
}
public void addAction(){
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb){
dispose();
}
}
});
}
}
checkListener.java
package xust.edu.cn.action;
import xust.edu.cn.view.KFC;
import xust.edu.cn.view.checkDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class checkListener implements ActionListener {
private KFC jf;
private int goodsNum = 0;
public checkListener(KFC jfKFC) {
jf = jfKFC;
}
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 20; i++) {
Object object = jf.getDeliverSpinner()[i].getValue();
int count = Integer.parseInt(String.valueOf(object));
goodsNum += count;
}
if(e.getSource() == jf.getjCheck()){
if(goodsNum>0){
new checkDialog(jf);
}
else {
ImageIcon icon = new ImageIcon("src//tip.jpg");
icon.setImage(icon.getImage().getScaledInstance(100,100,Image.SCALE_DEFAULT));
JOptionPane.showMessageDialog(jf,"请选择商品❤","温馨提示",JOptionPane.INFORMATION_MESSAGE,icon);
}
goodsNum = 0;
}
}
}
实现截图:

本文介绍了一个基于Java开发的肯德基点餐系统,包括kfc.java核心模块,checkDialog.java用于交互的对话框,checkListener.java监听用户操作,以及语音识别功能inVoice。系统还提供了截图展示其实际运行效果。
1303

被折叠的 条评论
为什么被折叠?



