KFC收银系统----第二部分(界面的设计及部分代码)
该系统在界面设计方面涉及到了Java GUI 中的很多知识,例如Java的布局,在会员注册以及会员支付页面主要运用了GridLayout(网格布局),使用布局管理器类管理布局可以减少很多工作量。再比如说用到了一些接触比较少的table;销售管理就是利用table来实现的。还有一些常用控件不常用的方法。比如说JButton 的setContentAreaFilled()方法,通过设置其参数为false 可以使按钮变为透明。点餐页的实现就是背景图加透明的按钮实现的,可以直接避免给按钮添加图片带来的麻烦。下面我将自己在界面实现过程中认为处理比较巧妙的几个部分分享一下:
- 在单品选购时,用户选择相应实物后会出现该物品的图片,以及要求用户输入数量。为此为按钮添加响应事件,当用户取消选择时依旧会触发按钮的响应事件,为了防止出现用户取消时图片出现的问题,为其显示页面添加了判断条件,即按钮为选中未选中状态时触发按钮才出现图片。一个JRadtionButton的响应实现代码如下:
-
drink_1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && drink_1.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/drink1.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true);//让Frame窗口失去边框和标题栏的修饰 jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[0] = Integer.parseInt(j.getText()); jd.dispose(); } }); } } });
- 套餐选购页主要应用了CardLayout(卡片布局管理器),使套餐以左右切换的方式出现。具体实现代码如下:
CardLayout card; JPanel pane; public void comboFood() { JFrame frame = new JFrame(); JPanel p = null; // 放按钮的JPanel JButton button_1 = null; // 上一步 JButton button_2 = null; // 下一步 JButton b_1 = null, b_2 = null, b_3 = null; // 三个可直接翻转到JPanel组件的按钮 JPanel p_1 = null, p_2 = null, p_3 = null; // 要切换的三个JPanel try { // 将LookAndFeel设置成Windows样式 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { ex.printStackTrace(); } /** 创建一个具有指定的水平和垂直间隙的新卡片布局 */ card = new CardLayout(5, 5); pane = new JPanel(card); // JPanel的布局管理将被设置成CardLayout p = new JPanel(); // 构造放按钮的JPanel button_1 = new JButton("< 上一个"); button_2 = new JButton("下一个 >"); b_1 = new JButton("1"); b_2 = new JButton("2"); b_3 = new JButton("3"); b_1.setMargin(new Insets(2, 2, 2, 2)); b_2.setMargin(new Insets(2, 2, 2, 2)); b_3.setMargin(new Insets(2, 2, 2, 2)); p.add(button_1); p.add(b_1); p.add(b_2); p.add(b_3); p.add(button_2); p_1 = new JPanel(); p_2 = new JPanel(); p_3 = new JPanel(); JButton b1 = new JButton(new ImageIcon("E://temp/People/mykfc/src/images/double.png")); JButton b2 = new JButton(new ImageIcon("E://temp/People/mykfc/src/images/couple.png")); p_1.add(b1); p_2.add(b2); p_3.setBackground(Color.gray); p_3.add(new JLabel("其他套餐敬请期待")); pane.add(p_1, "p1"); pane.add(p_2, "p2"); pane.add(p_3, "p3"); button_1.addActionListener(new ActionListener() { // 上一步的按钮动作 public void actionPerformed(ActionEvent e) { card.previous(pane); } }); button_2.addActionListener(new ActionListener() { // 下一步的按钮动作 public void actionPerformed(ActionEvent e) { card.next(pane); } }); b_1.addActionListener(new ActionListener() { // 直接翻转到p_1 public void actionPerformed(ActionEvent e) { card.show(pane, "p1"); } }); b_2.addActionListener(new ActionListener() { // 直接翻转到p_2 public void actionPerformed(ActionEvent e) { card.show(pane, "p2"); } }); b_3.addActionListener(new ActionListener() { // 直接翻转到p_3 public void actionPerformed(ActionEvent e) { card.show(pane, "p3"); } });
- 套餐选购中,各个套餐是以透明按钮的形式放在面板上的,当我们选中某一套餐时,会生成各个套餐的对象,以及存储食物信息这与单品选购产生对象的方式不同。单品选购所有食物的创建是在点击订单信息时创建的。具体实现代码如下:
b1.addActionListener(new ActionListener() {// 套餐一的响应事件 @Override public void actionPerformed(ActionEvent e) { if (salesclerk == null) { IFactory factory = new FoodFactory(); salesclerk = new Salesclerk(factory); } salesclerk.orderBeefHamburger(1); salesclerk.orderPrawnHamburger(1); salesclerk.orderHotChicken(2); salesclerk.orderOriginalFrenchFry(2); salesclerk.orderAppleJuice(2); String b1[] = String.valueOf(salesclerk.getMessage()).split("-"); StringBuilder b2 = new StringBuilder(); for (int i = 0; i < b1.length; i++) { if ((i + 1) % 3 == 0) { b2.append("单价:" + b1[i]); b2.append("\n"); } else { b2.append(b1[i] + " "); } } System.err.println(b2); message.setText(String.valueOf(b2)); tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 userOrder.pay = 35; frame.dispose(); // TODO Auto-generated method stub } });
-
bt_06.addActionListener(new ActionListener() {// 订单信息添加响应事件 @Override public void actionPerformed(ActionEvent e) { float pay = 0; IFactory factory = new FoodFactory(); salesclerk = new Salesclerk(factory); if (drink_1.isSelected()) { pay += salesclerk.orderAppleJuice(num[0]); System.out.println(salesclerk.getMessage()); } if (drink_2.isSelected()) { pay += salesclerk.orderGrapeJuice(num[1]); System.out.println(salesclerk.getMessage()); } if (hambuger_1.isSelected()) { pay += salesclerk.orderBeefHamburger(num[2]); System.out.println(salesclerk.getMessage()); } if (hambuger_2.isSelected()) { pay += salesclerk.orderPrawnHamburger(num[3]); System.out.println(salesclerk.getMessage()); } if (chicken_1.isSelected()) { pay += salesclerk.orderHotChicken(num[4]); System.out.println(salesclerk.getMessage()); } if (chicken_2.isSelected()) { pay += salesclerk.orderOriginalChicken(num[5]); System.out.println(salesclerk.getMessage()); } if (frenchFry_1.isSelected()) { pay += salesclerk.orderTomatoFrenchFry(num[6]); System.out.println(salesclerk.getMessage()); } if (frenchFry_2.isSelected()) { pay += salesclerk.orderOriginalFrenchFry(num[7]); System.out.println(salesclerk.getMessage()); } // jd.dispose(); message.setText(""); userOrder.pay = pay; String b1[] = String.valueOf(salesclerk.getMessage()).split("-"); StringBuilder b2 = new StringBuilder(); for (int i = 0; i < b1.length; i++) { if ((i + 1) % 3 == 0) { b2.append("单价:" + b1[i]); b2.append("\n"); } else { b2.append(b1[i] + " "); } } System.err.println(b2); message.setText(String.valueOf(b2)); tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 } });
在订单信息按钮的处理中,用户如果没有选餐,点击订单信息按钮会出现空指针异常。为了避免此类现象,我预先设置订单信息按钮为不可编辑状态。当用户点餐时将按钮在设置为可编辑状态。在界面的设计中为了符合逻辑先支付能打印页用了同样的方式来限制用户的操作。
以下部分为各个功能界面实现的代码:
- 菜单主页以及菜单项个别功能(会员管理)实现:
/**
*
*<p>Title:Mainmenu</p>
*<p>Description:主菜单(主页面)</p>
* @author dynamic
* @date 2018年10月25日 下午8:02:52
*
*/
public class Mainmenu extends JFrame {
private JPanel top;
private JPanel bootom;
private JPanel left;
private JPanel right;
private JMenuBar menuBar;
private JMenu select;
private JMenu exit;
private JMenuItem one;
private JMenuItem more;
private IFactory factory;
private Salesclerk salesclerk;
protected JFrame frame;
private JMenu member;
private JMenuItem add;
private JMenuItem order;
private JMenuItem querry;
public Mainmenu() {
frame = this;
top = new JPanel();
bootom = new JPanel();
left = new JPanel();
right = new JPanel();
order = new JMenuItem("用户点餐");
menuBar = new JMenuBar();
add = new JMenuItem("添加会员");
select = new JMenu("用户点餐");
exit = new JMenu("退出");
member = new JMenu("管理会员");
querry = new JMenuItem("销量查询");
this.setLayout(new BorderLayout());
select.setText("管理餐品");
select.add(order);
select.add(querry);
member.add(add);
menuBar.add(select);
menuBar.add(member);
menuBar.add(exit);
this.add(menuBar, BorderLayout.NORTH);
order.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
new userOrder();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
JFrame f = new JFrame("添加会员");
add.addActionListener(new ActionListener() {
private JTextField jname;
private JTextField jno;
private JTextField jmoney;
@Override
public void actionPerformed(ActionEvent e) {
Panel j = new Panel();
Panel j1 = new Panel();
JLabel lname = new JLabel(" 姓名");
jname = new JTextField();
JLabel lno = new JLabel(" 卡号");
jno = new JTextField();
JLabel lmoney = new JLabel(" 余额");
jmoney = new JTextField();
JButton addmember = new JButton("添加");
JButton cancel = new JButton("取消");
j.add(lno);
j.add(jno);
j.add(lname);
j.add(jname);
j.add(lmoney);
j.add(jmoney);
j1.add(addmember);
j1.add(cancel);
j.setLayout(new GridLayout(3, 2, 10, 20));
j1.setLayout(new GridLayout(1, 3));
f.add(j, BorderLayout.CENTER);
f.add(j1, BorderLayout.SOUTH);
f.setSize(300, 200);
f.setLocationRelativeTo(null);
f.setVisible(true);
addmember.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String userno = jno.getText();
String username = jname.getText();
String money = jmoney.getText();
String sql = "insert into member values ('" + userno + "','" + username + "','" + money + "')";
Dao.executeUpdate(sql);
Dao.close();
JOptionPane.showMessageDialog(null, "添加成功");
}
});
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.dispose();
}
});
}
});
exit.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
dispose();
}
});
querry.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Querry();
}
});
this.setTitle("KFC收银系统");
this.setSize(1050, 750);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args) {
new Mainmenu();
}
}
- 图二 点餐页
/** * *<p>Title:userOrder</p> *<p>Description:点餐页以及页面各个空间的响应事件的实现</p> * @author dynamic * @date 2018年10月25日 下午8:05:39 * */ public class userOrder extends JFrame { private JFrame frame; private JPanel center; private JLabel bg; private ImageIcon bgIcon; private JButton bt_01; private JButton bt_02; private JButton bt_03; private JButton bt_04; private JButton bt_05; private JButton bt_06; private JRadioButton drink_1; private JRadioButton drink_2; private JRadioButton hambuger_1; private JRadioButton hambuger_2; private JRadioButton chicken_1; private JRadioButton chicken_2; private JRadioButton frenchFry_1; private JRadioButton frenchFry_2; static float pay; private int[] num; private JTextField tota; private JTextArea message; private Salesclerk salesclerk; protected JFrame jd; private JButton combo2; private JButton combo1; public static float getPay() { return pay; } userOrder() throws IOException { frame = this; num = new int[8]; for (int i = 0; i < num.length; i++) num[i] = 1; bgIcon = new ImageIcon("E://temp/People/mykfc/src/images/orderMenu.png"); bg = new JLabel(bgIcon); this.getLayeredPane().add(bg, new Integer(Integer.MIN_VALUE)); bg.setBounds(0, 0, bgIcon.getIconWidth(), bgIcon.getIconHeight()); bt_01 = new JButton(); bt_01.setSize(260, 70); bt_01.setLocation(30, 31); bt_02 = new JButton(new ImageIcon()); bt_02.setSize(260, 86); bt_02.setLocation(30, 100); bt_03 = new JButton(new ImageIcon()); bt_03.setSize(260, 80); bt_03.setLocation(30, 490); bt_04 = new JButton(new ImageIcon()); bt_04.setSize(95, 78); bt_04.setLocation(620, 490); bt_05 = new JButton(new ImageIcon()); bt_05.setSize(95, 78); bt_05.setLocation(715, 490); bt_01.setContentAreaFilled(false); bt_02.setContentAreaFilled(false); bt_03.setContentAreaFilled(false); bt_04.setContentAreaFilled(false); bt_05.setContentAreaFilled(false); bt_06 = new JButton(); bt_06.setBounds(30, 185, 260, 45); bt_06.setContentAreaFilled(false); bt_06.setEnabled(false); bt_06.setFocusable(false); Font font = new Font("行书", Font.ITALIC, 20); tota = new JTextField(); tota.setBounds(450, 490, 190, 78); tota.setBorder(null); tota.setFont(font); tota.setEditable(false); tota.setOpaque(false); tota.setText(""); this.add(tota); message = new JTextArea(); // message.setEditable(false); message.setBackground(Color.orange); message.setForeground(Color.white); message.setFont(font); message.setSize(258, 261); message.setDisabledTextColor(Color.orange); JScrollPane jScrollPane = new JScrollPane(); jScrollPane.setLocation(30, 230); jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); jScrollPane.setSize(message.getSize()); jScrollPane.setOpaque(false); jScrollPane.add(message); jScrollPane.setOpaque(false); this.add(jScrollPane); this.add(bt_01); this.add(bt_02); this.add(bt_03); this.add(bt_04); this.add(bt_05); this.add(bt_06); bt_01.addActionListener(new ActionListener() {// 为单选添加响应事件 @Override public void actionPerformed(ActionEvent e) { singleFood(); bt_06.setEnabled(true); } }); bt_02.addActionListener(new ActionListener() {// 为套餐调价响应事件 @Override public void actionPerformed(ActionEvent e) { comboFood(); bt_06.setEnabled(true); } }); bt_06.addActionListener(new ActionListener() {// 订单信息添加响应事件 @Override public void actionPerformed(ActionEvent e) { float pay = 0; IFactory factory = new FoodFactory(); salesclerk = new Salesclerk(factory); if (drink_1.isSelected()) { pay += salesclerk.orderAppleJuice(num[0]); System.out.println(salesclerk.getMessage()); } if (drink_2.isSelected()) { pay += salesclerk.orderGrapeJuice(num[1]); System.out.println(salesclerk.getMessage()); } if (hambuger_1.isSelected()) { pay += salesclerk.orderBeefHamburger(num[2]); System.out.println(salesclerk.getMessage()); } if (hambuger_2.isSelected()) { pay += salesclerk.orderPrawnHamburger(num[3]); System.out.println(salesclerk.getMessage()); } if (chicken_1.isSelected()) { pay += salesclerk.orderHotChicken(num[4]); System.out.println(salesclerk.getMessage()); } if (chicken_2.isSelected()) { pay += salesclerk.orderOriginalChicken(num[5]); System.out.println(salesclerk.getMessage()); } if (frenchFry_1.isSelected()) { pay += salesclerk.orderTomatoFrenchFry(num[6]); System.out.println(salesclerk.getMessage()); } if (frenchFry_2.isSelected()) { pay += salesclerk.orderOriginalFrenchFry(num[7]); System.out.println(salesclerk.getMessage()); } // jd.dispose(); message.setText(""); userOrder.pay = pay; String b1[] = String.valueOf(salesclerk.getMessage()).split("-"); StringBuilder b2 = new StringBuilder(); for (int i = 0; i < b1.length; i++) { if ((i + 1) % 3 == 0) { b2.append("单价:" + b1[i]); b2.append("\n"); } else { b2.append(b1[i] + " "); } } System.err.println(b2); message.setText(String.valueOf(b2)); tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 } }); bt_03.addActionListener(new ActionListener() {// 会员支付添加响应事件 @Override public void actionPerformed(ActionEvent e) { tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 new member(salesclerk); dispose(); } }); bt_04.addActionListener(new ActionListener() {// 支付按钮的响应事件 @Override public void actionPerformed(ActionEvent e) { tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 new Pay(salesclerk); dispose(); } }); bt_05.addActionListener(new ActionListener() {// 退出按钮的响应事件 @Override public void actionPerformed(ActionEvent e) { dispose(); } }); center = new JPanel(); this.setLayout(new BorderLayout()); this.add(center, BorderLayout.CENTER); ((JPanel) getContentPane()).setOpaque(false); this.setLayout(new BorderLayout()); this.setUndecorated(true); this.setSize(840, 600); this.setTitle("点餐"); this.setLocationRelativeTo(null); this.setVisible(true); } public void singleFood() { center.setLayout(new GridLayout(8, 2)); drink_1 = new JRadioButton(); drink_1.setText("鲜榨西瓜汁"); drink_2 = new JRadioButton("鲜榨橙汁"); hambuger_1 = new JRadioButton("至尊牛肉汉堡"); hambuger_2 = new JRadioButton("全虾堡"); chicken_1 = new JRadioButton("香辣鸡翅"); chicken_2 = new JRadioButton("奥尔良风味烤翅"); frenchFry_1 = new JRadioButton("鸡米花"); frenchFry_2 = new JRadioButton("脆骨肉串"); drink_1.setBounds(0, 0, 150, 30); drink_2.setBounds(150, 0, 150, 30); hambuger_1.setBounds(0, 40, 150, 30); hambuger_2.setBounds(150, 40, 150, 30); chicken_1.setBounds(0, 80, 150, 30); chicken_2.setBounds(150, 80, 150, 30); frenchFry_1.setBounds(0, 120, 150, 30); frenchFry_2.setBounds(150, 120, 150, 30); center.add(drink_1); center.add(drink_2); center.add(hambuger_1); center.add(hambuger_2); center.add(chicken_1); center.add(chicken_2); center.add(frenchFry_1); center.add(frenchFry_2); center.setBounds(290, 34, 520, 453); drink_1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && drink_1.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/drink1.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[0] = Integer.parseInt(j.getText()); jd.dispose(); } }); } } }); drink_2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && drink_2.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/drink2.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[1] = Integer.parseInt(j.getText()); jd.dispose(); ; System.out.println("ok"); } }); } } }); hambuger_1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && hambuger_1.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/hambuger1.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[2] = Integer.parseInt(j.getText()); jd.dispose(); System.out.println("ok"); } }); } } }); hambuger_2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && hambuger_2.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/hambuger2.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[3] = Integer.parseInt(j.getText()); jd.dispose(); System.out.println("ok"); } }); } } }); chicken_1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && chicken_1.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/chick1.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[4] = Integer.parseInt(j.getText()); jd.dispose(); System.out.println("ok"); } }); } } }); chicken_2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && chicken_2.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/chick2.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[5] = Integer.parseInt(j.getText()); jd.dispose(); ; System.out.println("ok"); } }); } } }); frenchFry_1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && frenchFry_1.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/frenck1.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[6] = Integer.parseInt(j.getText()); jd.dispose(); ; System.out.println("ok"); } }); } } }); frenchFry_2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1 && frenchFry_2.isSelected()) { JTextField j = new JTextField(); j.setText("1"); JButton button_ok = new JButton("添加"); jd = new JFrame(); jd.setBounds(1000, 500, 120, 100); jd.getContentPane().setLayout(new BorderLayout()); jd.add(new JLabel(new ImageIcon("E://temp/People/mykfc/src/images/french2.png"))); JPanel bo = new JPanel(); bo.setLayout(new GridLayout(1, 2)); bo.add(j); bo.add(button_ok); jd.add(bo, BorderLayout.SOUTH); jd.setUndecorated(true); jd.setVisible(true); button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { num[7] = Integer.parseInt(j.getText()); jd.dispose(); System.out.println("ok"); } }); } } }); } CardLayout card; JPanel pane; public void comboFood() { JFrame frame = new JFrame(); JPanel p = null; // 放按钮的JPanel JButton button_1 = null; // 上一步 JButton button_2 = null; // 下一步 JButton b_1 = null, b_2 = null, b_3 = null; // 三个可直接翻转到JPanel组件的按钮 JPanel p_1 = null, p_2 = null, p_3 = null; // 要切换的三个JPanel try { // 将LookAndFeel设置成Windows样式 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { ex.printStackTrace(); } /** 创建一个具有指定的水平和垂直间隙的新卡片布局 */ card = new CardLayout(5, 5); pane = new JPanel(card); // JPanel的布局管理将被设置成CardLayout p = new JPanel(); // 构造放按钮的JPanel button_1 = new JButton("< 上一个"); button_2 = new JButton("下一个 >"); b_1 = new JButton("1"); b_2 = new JButton("2"); b_3 = new JButton("3"); b_1.setMargin(new Insets(2, 2, 2, 2)); b_2.setMargin(new Insets(2, 2, 2, 2)); b_3.setMargin(new Insets(2, 2, 2, 2)); p.add(button_1); p.add(b_1); p.add(b_2); p.add(b_3); p.add(button_2); p_1 = new JPanel(); p_2 = new JPanel(); p_3 = new JPanel(); JButton b1 = new JButton(new ImageIcon("E://temp/People/mykfc/src/images/double.png")); JButton b2 = new JButton(new ImageIcon("E://temp/People/mykfc/src/images/couple.png")); p_1.add(b1); p_2.add(b2); p_3.setBackground(Color.gray); p_3.add(new JLabel("其他套餐敬请期待")); pane.add(p_1, "p1"); pane.add(p_2, "p2"); pane.add(p_3, "p3"); button_1.addActionListener(new ActionListener() { // 上一步的按钮动作 public void actionPerformed(ActionEvent e) { card.previous(pane); } }); button_2.addActionListener(new ActionListener() { // 下一步的按钮动作 public void actionPerformed(ActionEvent e) { card.next(pane); } }); b_1.addActionListener(new ActionListener() { // 直接翻转到p_1 public void actionPerformed(ActionEvent e) { card.show(pane, "p1"); } }); b_2.addActionListener(new ActionListener() { // 直接翻转到p_2 public void actionPerformed(ActionEvent e) { card.show(pane, "p2"); } }); b_3.addActionListener(new ActionListener() { // 直接翻转到p_3 public void actionPerformed(ActionEvent e) { card.show(pane, "p3"); } }); b1.addActionListener(new ActionListener() {// 套餐一的响应事件 @Override public void actionPerformed(ActionEvent e) { if (salesclerk == null) { IFactory factory = new FoodFactory(); salesclerk = new Salesclerk(factory); } salesclerk.orderBeefHamburger(1); salesclerk.orderPrawnHamburger(1); salesclerk.orderHotChicken(2); salesclerk.orderOriginalFrenchFry(2); salesclerk.orderAppleJuice(2); String b1[] = String.valueOf(salesclerk.getMessage()).split("-"); StringBuilder b2 = new StringBuilder(); for (int i = 0; i < b1.length; i++) { if ((i + 1) % 3 == 0) { b2.append("单价:" + b1[i]); b2.append("\n"); } else { b2.append(b1[i] + " "); } } System.err.println(b2); message.setText(String.valueOf(b2)); tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 userOrder.pay = 35; frame.dispose(); // TODO Auto-generated method stub } }); b2.addActionListener(new ActionListener() {// 套餐二的响应事件 @Override public void actionPerformed(ActionEvent e) { if (salesclerk == null) { IFactory factory = new FoodFactory(); salesclerk = new Salesclerk(factory); } salesclerk.orderBeefHamburger(1); salesclerk.orderPrawnHamburger(1); salesclerk.orderOriginalChicken(2); salesclerk.orderTomatoFrenchFry(2); salesclerk.orderGrapeJuice(2); String b1[] = String.valueOf(salesclerk.getMessage()).split("-"); StringBuilder b2 = new StringBuilder(); for (int i = 0; i < b1.length; i++) { if ((i + 1) % 3 == 0) { b2.append("单价:" + b1[i]); b2.append("\n"); } else { b2.append(b1[i] + " "); } } System.err.println(b2); message.setText(String.valueOf(b2)); tota.setText(String.valueOf(pay));// 给总价的文本框设置内容->当前餐品总价 userOrder.pay = 35; frame.dispose(); } }); frame.getContentPane().add(pane); frame.getContentPane().add(p, BorderLayout.SOUTH); frame.setSize(320, 220); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) throws IOException { new userOrder(); } }
- 支付和打印小票功能页面
/** * *<p>Title:Pay</p> *<p>Description:支付打印小票功能页面</p> * @author dynamic * @date 2018年10月25日 下午8:08:10 * */ public class Pay extends JFrame { Salesclerk salesclerk; String str[]; String output; JTextArea text; JButton ok; JButton pay; JPanel bootom; public Pay(Salesclerk salesclerk) { bootom = new JPanel(); bootom.setLayout(new GridLayout(1, 2)); pay = new JButton("支付"); ok = new JButton("打印小票"); ok.setEnabled(false); text = new JTextArea(); bootom.add(pay); bootom.add(ok); this.salesclerk = salesclerk; StringBuilder s = new StringBuilder(); str = (userOrder.getPay() + "-" + salesclerk.getMessage()).split("-"); s.append("----\t*您的账单*\t----"); s.append("\n"); s.append("类型" + "\t" + "数量" + "\t" + "单价" + "\t"); s.append("\n"); for (int i = 1; i < str.length; i++) { s.append(str[i]); s.append("\t"); if (i % 3 == 0) { s.append("\n"); } } s.append("-----\t实际支付:" + str[0] + "\t-----"); text.setText(String.valueOf(s)); pay.addActionListener(new ActionListener() { private String a = "0"; private String b = "0"; private String c = "0"; private String d = "0"; private String k = "0"; private String f = "0"; private String g = "0"; private String h = "0"; @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "支付成功"); ok.setEnabled(true);// 支付后才能打印小票 for (int i = 1; i < str.length && (i % 3 != 0); i = i + 3) { if (str[i].equals("鲜榨西瓜汁")) { a = str[i + 1]; } if (str[i].equals("鲜榨汁")) { b = str[i + 1]; } if (str[i].equals("至尊牛肉堡")) { c = str[i + 1]; } if (str[i].equals("全虾汉堡")) { d = str[i + 1]; } if (str[i].equals("香辣鸡翅")) { k = str[i + 1]; } if (str[i].equals("奥尔良风味烤翅")) { f = str[i + 1]; } if (str[i].equals("鸡米花")) { g = str[i + 1]; } if (str[i].equals("脆骨肉串")) { h = str[i + 1]; } } String sql = "insert into food values ('" + a + "','" + b + "','" + c + "','" + d + "','" + k + "','" + f + "','" + g + "','" + h + "','" + str[0] + "')"; // String sql="update food set drink1='"+a+"' "; Dao.executeUpdate(sql); System.err.println(a + "ok"); Dao.close(); } }); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { BufferedWriter br = new BufferedWriter(new FileWriter("message.txt")); br.write(String.valueOf(s)); br.close(); JOptionPane.showMessageDialog(null, "打印成功,请取走你的订单"); dispose(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); this.add(bootom, BorderLayout.SOUTH); this.add(text, BorderLayout.CENTER); this.setSize(220, 400); this.setLocationRelativeTo(null); this.setVisible(true); System.out.println(s); } }
- 销量查询页面的实现
/** * *<p>Title:Querry</p> *<p>Description:销量查询页面</p> * @author dynamic * @date 2018年10月25日 下午8:12:32 * */ public class Querry extends JFrame { private JTable table;// 声明一个表格对象 private String[] heads = { "西瓜汁", "鲜橙汁", "至尊牛肉堡", "全虾汉堡", "香辣鸡翅", "奥尔良风味烤翅", "鸡米花", "脆骨肉串", "总收入" };// 定义表格头部信息的字符串数组 public Querry() { super(); BorderLayout borderLayout = new BorderLayout(); getContentPane().setLayout(borderLayout);// 设置容器布局方式 setTitle("销量查询"); JPanel panel_browser = new JPanel();// 创建JPanel型容器对象 getContentPane().add(panel_browser, BorderLayout.NORTH); JButton btn_query = new JButton("查询");// 创建查询按钮对象 btn_query.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btn_queryActionPerformed(e); } }); panel_browser.add(btn_query);// 在容器中放置查询按钮对象 JPanel panel_main = new JPanel(); BorderLayout borderLayout_main = new BorderLayout(); panel_main.setLayout(borderLayout_main); getContentPane().add(panel_main, BorderLayout.CENTER); JScrollPane scrollPane = new JScrollPane();// 创建滚动类对象 panel_main.add(scrollPane);// 添加滚动面板 table = new JTable();// 创建表格对象 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);// 当表格对象被调整时,设置表格是否自动调整宽度。设为不调整宽度 scrollPane.setViewportView(table);// 设置一个视口并设置其视图 JPanel panel_close = new JPanel(); // 设置panel_close边框的颜色(为当前活动窗口的边框颜色)厚度和拐角类型 panel_close.setBorder(new LineBorder(SystemColor.activeCaptionBorder, 1, false)); getContentPane().add(panel_close, BorderLayout.SOUTH); FlowLayout flowLayout = new FlowLayout(); flowLayout.setVgap(2);// 设置组件间的垂直间距 flowLayout.setHgap(30);// 设置组件间的水平间距 flowLayout.setAlignment(FlowLayout.RIGHT);// 设置组件之间的对齐方式 panel_close.setLayout(flowLayout); JButton btn_close = new JButton(); btn_close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); btn_close.setText("关闭"); panel_close.add(btn_close); setSize(720, 320); setLocationRelativeTo(getOwner());// 设置窗口居中显示 setVisible(true); } private void btn_queryActionPerformed(ActionEvent e) { Object[][] results = new Object[1000][1000];// 记录查询结果的二维数组 String sql = "select * from food"; ResultSet re = Dao.executeQuery(sql); float num[] = new float[9]; int i = 0; try { while (re.next()) { results[i][0] = re.getInt("drink1"); results[i][1] = re.getInt("drink2"); results[i][2] = re.getInt("hambuger1"); results[i][3] = re.getInt("hambuger2"); results[i][4] = re.getInt("chick1"); results[i][5] = re.getInt("chick2"); results[i][6] = re.getInt("french1"); results[i][7] = re.getInt("french2"); results[i][8] = re.getFloat("tota"); i++; } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println(i); DefaultTableModel model = new DefaultTableModel();// 一个零行零列的表 model.setDataVector(results, heads);// 用results,列名为heads替换旧表 setDefaultCloseOperation(EXIT_ON_CLOSE); table.setModel(model);// 将此表的数据源设置为model } }
界面实现效果展示:https://blog.youkuaiyun.com/sinat_41058015/article/details/83383623