📄 tipwizardframe.java
字号:
codeRadioButton.setSelected(true);
codeRadioButton.setText("助记码");
codePanel.add(codeRadioButton);
final JLabel codeCLabel = new JLabel();
codeCLabel.setText("):");
codePanel.add(codeCLabel);
codeTextField = new JTextField();
codeTextField.setColumns(16);
codeTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {// 通过键盘监听器实现控制文本框的输入内容
if ("abcdefghijklmnopqrstuvwxyz0123456789".indexOf(e
.getKeyChar()) < 0)// 只允许输入字母和数字
e.consume();// 销毁此次键盘事件
}
public void keyReleased(KeyEvent e) {// 通过键盘监听器实现智能获取菜品
if (e.getKeyCode() == KeyEvent.VK_ENTER) {// 按下回车键
makeOutAnInvoice();// 开单
} else {
String input = codeTextField.getText();// 获得输入内容
Vector menuV = null;// 符合条件的菜品
if (input.length() > 0) {// 确认输入了内容
if (codeRadioButton.isSelected()) {// 按助记码查询
Vector menusV = dao.sMenuByCode(input);// 查询符合条件的菜品
if (menusV.size() > 0) {// 存在符合条件的菜品
menuV = (Vector) menusV.get(0);// 获得第一个符合条件的菜品
menuV.remove(0);// 移除菜品的序号
}
} else {// 按编号查询
if (input.length() == 9)// 确认编号是否为9位
menuV = dao.sMenuByNum(input);// 查询符合条件的菜品
}
}
if (menuV == null) {// 不存在符合条件的菜品
nameTextField.setText(null);// 设置“商品名称”文本框为空
unitTextField.setText(null);// 设置“单位”文本框为空
priceTextField.setText(null);// 设置“单价”文本框为空
} else {// 存在符合条件的菜品
nameTextField.setText(menuV.get(2).toString());// 设置“商品名称”文本框为符合条件的菜品名称
unitTextField.setText(menuV.get(4).toString());// 设置“单位”文本框为符合条件的菜品单位
priceTextField.setText(menuV.get(5).toString());// 设置“单价”文本框为符合条件的菜品单价
}
}
}
});
orderDishesPanel.add(codeTextField);
final JLabel nameLabel = new JLabel();
nameLabel.setText(" 商品名称:");
orderDishesPanel.add(nameLabel);
nameTextField = new JTextField();
nameTextField.setColumns(24);
nameTextField.setEditable(false);
nameTextField.setFocusable(false);// 设置“商品名称”文本框不可以获得焦点
nameTextField.setHorizontalAlignment(SwingConstants.CENTER);
orderDishesPanel.add(nameTextField);
final JLabel unitLabel = new JLabel();
unitLabel.setText(" 单位:");
orderDishesPanel.add(unitLabel);
unitTextField = new JTextField();
unitTextField.setColumns(6);
unitTextField.setEditable(false);
unitTextField.setFocusable(false); // 设置“单位”文本框不可以获得焦点
unitTextField.setHorizontalAlignment(SwingConstants.CENTER);
orderDishesPanel.add(unitTextField);
final JLabel priceLabel = new JLabel();
priceLabel.setText(" 单价:");
orderDishesPanel.add(priceLabel);
priceTextField = new JTextField();
priceTextField.setColumns(6);
priceTextField.setEditable(false);
priceTextField.setFocusable(false); // 设置“单价”文本框不可以获得焦点
priceTextField.setHorizontalAlignment(SwingConstants.CENTER);
orderDishesPanel.add(priceTextField);
final JLabel amountLabel = new JLabel();
amountLabel.setText("元 数量:");
orderDishesPanel.add(amountLabel);
amountTextField = new JTextField();// 创建“数量”文本框
amountTextField.setColumns(6);
amountTextField.setHorizontalAlignment(SwingConstants.CENTER);
amountTextField.setNextFocusableComponent(codeTextField);
amountTextField.setText("1");// 默认数量为1
amountTextField.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {// 当文本框获得焦点时执行
amountTextField.setText(null);// 设置“数量”文本框为空
}
public void focusLost(FocusEvent e) {// 当文本框失去焦点时执行
String amount = amountTextField.getText();// 获得输入的数量
if (amount.length() == 0)// 未输入数量
amountTextField.setText("1"); // 恢复为默认数量1
}
});
amountTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
int length = amountTextField.getText().length();// 获取当前数量的位数
if (length < 2) {// 位数小于两位
String num = (length == 0 ? "123456789" : "0123456789"); // 将允许输入的字符定义成字符串
if (num.indexOf(e.getKeyChar()) < 0)// 查看按键字符是否包含在允许输入的字符中
e.consume(); // 如果不包含在允许输入的字符中则销毁此次按键事件
} else {
e.consume(); // 如果不小于数量允许的最大位数则销毁此次按键事件
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
makeOutAnInvoice();// 开单
codeTextField.requestFocus();// 为用来输入助记码的文本框请求焦点
}
}
});
orderDishesPanel.add(amountTextField);
final JPanel functionPanel = new JPanel();
final FlowLayout flowLayout_1 = new FlowLayout();
flowLayout_1.setVgap(0);
functionPanel.setLayout(flowLayout_1);
functionPanel.setBorder(new TitledBorder(null, "",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
operatePanel.add(functionPanel);
final JLabel adLabel = new JLabel();
adLabel.setIcon(new ImageIcon(TipWizardFrame.class
.getResource("/img/main_ad.png")));
functionPanel.add(adLabel);
final JPanel checkOutPanel = new JPanel();
checkOutPanel.setPreferredSize(new Dimension(260, 150));
checkOutPanel.setLayout(new GridBagLayout());
functionPanel.add(checkOutPanel);
final JLabel expenditureLabel = new JLabel();
expenditureLabel.setFont(new Font("", Font.BOLD, 16));
expenditureLabel.setText("消费金额:");
final GridBagConstraints gridBagConstraints_13 = new GridBagConstraints();
gridBagConstraints_13.gridx = 0;
gridBagConstraints_13.gridy = 0;
gridBagConstraints_13.insets = new Insets(0, 10, 0, 0);
checkOutPanel.add(expenditureLabel, gridBagConstraints_13);
expenditureTextField = new JTextField();
expenditureTextField.setHorizontalAlignment(SwingConstants.RIGHT);
expenditureTextField.setText("0");
expenditureTextField.setForeground(new Color(255, 0, 0));
expenditureTextField.setFont(new Font("", Font.BOLD, 15));
expenditureTextField.setColumns(7);
expenditureTextField.setEditable(false);
final GridBagConstraints gridBagConstraints_6 = new GridBagConstraints();
gridBagConstraints_6.gridy = 0;
gridBagConstraints_6.gridx = 1;
checkOutPanel.add(expenditureTextField, gridBagConstraints_6);
final JLabel expenditureUnitLabel = new JLabel();
expenditureUnitLabel.setForeground(new Color(255, 0, 0));
expenditureUnitLabel.setFont(new Font("", Font.BOLD, 15));
expenditureUnitLabel.setText(" 元");
final GridBagConstraints gridBagConstraints_14 = new GridBagConstraints();
gridBagConstraints_14.gridy = 0;
gridBagConstraints_14.gridx = 2;
checkOutPanel.add(expenditureUnitLabel, gridBagConstraints_14);
final JLabel realWagesLabel = new JLabel();
realWagesLabel.setFont(new Font("", Font.BOLD, 16));
realWagesLabel.setText("实收金额:");
final GridBagConstraints gridBagConstraints_7 = new GridBagConstraints();
gridBagConstraints_7.insets = new Insets(10, 10, 0, 0);
gridBagConstraints_7.gridy = 1;
gridBagConstraints_7.gridx = 0;
checkOutPanel.add(realWagesLabel, gridBagConstraints_7);
realWagesTextField = new JTextField();
realWagesTextField.setHorizontalAlignment(SwingConstants.RIGHT);
realWagesTextField.setText("0");
realWagesTextField.setForeground(new Color(0, 128, 0));
realWagesTextField.setFont(new Font("", Font.BOLD, 15));
realWagesTextField.setColumns(7);
realWagesTextField.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
realWagesTextField.setText("");
}
public void focusLost(FocusEvent e) {
if (realWagesTextField.getText().length() == 0)
realWagesTextField.setText("0");
}
});
realWagesTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
int length = realWagesTextField.getText().length();// 获取当前数量的位数
if (length < 8) {// 位数小于两位
String num = (length == 4 ? "123456789" : "0123456789"); // 将允许输入的字符定义成字符串
if (num.indexOf(e.getKeyChar()) < 0)// 查看按键字符是否包含在允许输入的字符中
e.consume(); // 如果不包含在允许输入的字符中则销毁此次按键事件
} else {
e.consume(); // 如果不小于数量允许的最大位数则销毁此次按键事件
}
}
});
final GridBagConstraints gridBagConstraints_8 = new GridBagConstraints();
gridBagConstraints_8.insets = new Insets(10, 0, 0, 0);
gridBagConstraints_8.gridy = 1;
gridBagConstraints_8.gridx = 1;
checkOutPanel.add(realWagesTextField, gridBagConstraints_8);
final JLabel realWagesUnitLabel = new JLabel();
realWagesUnitLabel.setForeground(new Color(0, 128, 0));
realWagesUnitLabel.setFont(new Font("", Font.BOLD, 15));
realWagesUnitLabel.setText(" 元");
final GridBagConstraints gridBagConstraints_15 = new GridBagConstraints();
gridBagConstraints_15.insets = new Insets(10, 0, 0, 0);
gridBagConstraints_15.gridy = 1;
gridBagConstraints_15.gridx = 2;
checkOutPanel.add(realWagesUnitLabel, gridBagConstraints_15);
final JButton checkOutButton = new JButton();
checkOutButton.setText("结 账");
checkOutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int selectedRow = rightTable.getSelectedRow();
if (selectedRow < 0) {// 未选中任何餐台
JOptionPane.showMessageDialog(null, "请选择要结账的餐台!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
return;
}
int rowCount = leftTable.getRowCount();// 获得结账餐台的点菜数量
if (leftTable.getValueAt(rowCount - 1, 0).equals("NEW")) {// 存在未签单菜品
JOptionPane.showMessageDialog(null, "请先确定未签单商品的处理方式!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示
return;
}
int expenditure = Integer.valueOf(expenditureTextField
.getText());// 获得消费金额
int realWages = Integer.valueOf(realWagesTextField.getText());// 获得实收金额
if (realWages < expenditure) {// 查看实收金额是否小于消费金额
if (realWages == 0)// 未输入实收金额
JOptionPane.showMessageDialog(null, "请输入实收金额!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
else
// 实收金额小于消费金额
JOptionPane.showMessageDialog(null, "实收金额不能小于消费金额!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示
realWagesTextField.requestFocus();// 为“实收金额”文本框请求获得焦点
return;
}
changeTextField.setText((realWages - expenditure) + "");// 计算并设置“找零金额”
String[] orderFormData = {
getNum(),
rightTable.getValueAt(selectedRow, 1).toString(),
Today.getDate() + " "
+ rightTable.getValueAt(selectedRow, 2),
expenditureTextField.getText(),
TipWizardFrame.this.managerV.get(0).toString() };// 组织消费单信息
dao.iOrderForm(orderFormData);// 持久化到数据库
String[] orderItemData = new String[4];// 用来存储消费项目信息
orderItemData[0] = dao.sOrderFormOfMaxId();// 获得消费单编号
for (int row = 0; row < rowCount; row++) {// 通过循环持久化消费项目信息
orderItemData[1] = leftTable.getValueAt(row, 2).toString();// 获得菜品编号
orderItemData[2] = leftTable.getValueAt(row, 5).toString();// 获得菜品数量
orderItemData[3] = leftTable.getValueAt(row, 7).toString();// 获得菜品消费金额
dao.iOrderItem(orderItemData);// 持久化到数据库
}
JOptionPane.showMessageDialog(null, rightTable.getValueAt(
selectedRow, 1)
+ " 结账完成!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示
//
rightTableModel.removeRow(selectedRow);// 从“开台列表”中移除结账餐台
leftTableDataV.removeAllElements();// 清空“签单列表”
leftTableModel.setDataVector(leftTableDataV, leftTableColumnV);// 刷新“签单列表”
realWagesTextField.setText("0");// 清空“实收金额”文本框
changeTextField.setText("0");// 清空“找零金额”文本框
itemOfDeskV.remove(selectedRow);// 从数据集中移除结账餐台
}
});
checkOutButton.setMargin(new Insets(2, 14, 2, 14));
checkOutButton.setFont(new Font("", Font.BOLD, 12));
final GridBagConstraints gridBagConstraints_10 = new GridBagConstraints();
gridBagConstraints_10.anchor = GridBagConstraints.EAST;
gridBagConstraints_10.gridwidth = 2;
gridBagConstraints_10.insets = new Insets(10, 0, 0, 0);
gridBagConstraints_10.gridy = 2;
gridBagConstraints_10.gridx = 1;
checkOutPanel.add(checkOutButton, gridBagConstraints_10);
final JLabel changeLabel = new JLabel();
changeLabel.setFont(new Font("", Font.BOLD, 16));
changeLabel.setText("找零金额:");
final GridBagConstraints gridBagConstraints_11 = new GridBagConstraints();
gridBagConstraints_11.insets = new Insets(10, 10, 0, 0);
gridBagConstraints_11.gridy = 3;
gridBagConstraints_11.gridx = 0;
checkOutPanel.add(changeLabel, gridBagConstraints_11);
changeTextField = new JTextField();
changeTextField.setHorizontalAlignment(SwingConstants.RIGHT);
changeTextField.setText("0");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -