📄 menudialog.java
字号:
final JPanel panel = new JPanel();
final FlowLayout flowLayout_1 = new FlowLayout();
panel.setLayout(flowLayout_1);
final GridBagConstraints gridBagConstraints_14 = new GridBagConstraints();
gridBagConstraints_14.anchor = GridBagConstraints.EAST;
gridBagConstraints_14.insets = new Insets(5, 0, 10, 0);
gridBagConstraints_14.gridwidth = 7;
gridBagConstraints_14.gridy = 2;
gridBagConstraints_14.gridx = 0;
operatePanel.add(panel, gridBagConstraints_14);
final JButton addButton = new JButton();
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Field[] fields = MenuDialog.class.getDeclaredFields();// 通过Java反射获取MenuDialog类的所有属性
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];// 获得指定属性
if (field.getType().equals(JTextField.class)) { // 只验证JTextField类型的属性
field.setAccessible(true); // 私有属性必须设为true才允许访问
JTextField textField = null;// 声明一个JTextField类型的对象
try {
textField = (JTextField) field.get(MenuDialog.this); // 获得本类中的相应对象
} catch (Exception exception) {
exception.printStackTrace();
}
if (textField.getText().trim().equals("")) { // 文本框为空
JOptionPane.showMessageDialog(null, "请填写商品“"
+ textField.getName() + "”!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);// 弹出需要输入信息的提示
textField.requestFocus(); // 令文本框获得焦点
return;// 返回
}
}
}
if (sortComboBox.getSelectedIndex() == 0) {// 单独验证下拉菜单
JOptionPane.showMessageDialog(null, "请选择商品所属“菜系”!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);
return;
}
//
String menu[] = new String[7];// 创建一个数组,用来保存菜品信息
menu[0] = numTextField.getText().trim();// 获得菜品编号
menu[1] = nameTextField.getText().trim();// 获得菜品名称
menu[2] = codeTextField.getText().trim();// 获得菜品助记码
menu[3] = sortComboBox.getSelectedItem().toString();// 获得菜品所属菜系
menu[4] = unitTextField.getText().trim();// 获得菜品单位
menu[5] = unitPriceTextField.getText().trim();// 获得菜品单价
menu[6] = "销售";
if (menu[1].length() > 10) {
JOptionPane.showMessageDialog(null, "菜品名称最多只能为 10 个汉字!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
nameTextField.requestFocus();
return;
}
if (menu[2].length() > 10) {
JOptionPane.showMessageDialog(null, "助记码最多只能为 10 个字符!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
codeTextField.requestFocus();
return;
}
if (menu[4].length() > 2) {
JOptionPane.showMessageDialog(null, "单位最多只能为 2 个汉字!",
"友情提示", JOptionPane.INFORMATION_MESSAGE);
unitTextField.requestFocus();
return;
}
if (!Validate.execute("[1-9]{1}[0-9]{0,3}", menu[5])) {
String infos[] = { "单价输入错误!", "单价必须在 1——9999" };
JOptionPane.showMessageDialog(null, infos, "友情提示",
JOptionPane.INFORMATION_MESSAGE);
unitPriceTextField.requestFocus();
return;
}
if (dao.sMenuByNameAndState(menu[1], "销售") != null) {
JOptionPane.showMessageDialog(null, "该菜品已经存在!", "友情提示",
JOptionPane.INFORMATION_MESSAGE);
nameTextField.requestFocus();
return;
}
int row = tableModel.getRowCount();// 获得当前拥有的菜品数量
Vector newMenuV = new Vector();
newMenuV.add(row + 1);// 添加序号
for (int i = 0; i < menu.length; i++) {
newMenuV.add(menu[i]);// 添加菜品信息
}
Vector sortVector = (Vector) dao.sSortByName(menu[3]).get(0);// 获得所属菜系
menu[3] = sortVector.get(1).toString();// 设置菜系主键
Vector homonymyMenuOfDel = dao.sMenuByNameAndState(menu[1],
"删除");
if (homonymyMenuOfDel == null) {
dao.iMenu(menu);// 将新菜品信息保存到数据库
} else {
newMenuV.set(1, homonymyMenuOfDel.get(0));
dao.uMenu(menu);
}
tableModel.addRow(newMenuV);// 将新菜品添加到表格中
table.setRowSelectionInterval(row, row);// 选中新添加的菜品
numTextField.setText(getNextNum(menu[0]));
nameTextField.setText(null);
codeTextField.setText(null);
sortComboBox.setSelectedIndex(0);
unitTextField.setText(null);
unitPriceTextField.setText(null);
//
}
});
addButton.setText("添加");
panel.add(addButton);
final JButton delButton = new JButton();
delButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();// 获得选中的菜品
String delMenuName = table.getValueAt(row, 2).toString();
String info = "确定要删除菜品“" + delMenuName + "”?";
int j = JOptionPane.showConfirmDialog(null, info, "友情提示",
JOptionPane.YES_NO_OPTION);// 弹出确认提示框
if (j == 0) {// 确认删除
tableModel.removeRow(row);// 从表格中移除菜品信息
int rowCount = table.getRowCount();// 获得删除后拥有的菜品数
if (rowCount > 0) {// 还拥有菜品
if (row < table.getRowCount()) {// 删除的不是位于表格最后的菜系
for (int i = row; i < table.getRowCount(); i++) {
table.setValueAt(i + 1 + "", i, 0);// 修改位于删除菜系之后的序号
}
table.setRowSelectionInterval(row, row);// 设置上移到删除行索引的菜系为被选中
} else {
table.setRowSelectionInterval(row - 1, row - 1);// 设置当前位于表格最后的菜系被选中
}
}
//
dao.uMenuStateByName(delMenuName, "删除");
JDBC.closeConnection();
}
}
});
delButton.setText("删除");
panel.add(delButton);
final JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane);
String columnNames[] = new String[] { "序 号", "编 号", "名 称", "助记码",
"菜 系", "单 位", "单 价" };
for (int i = 0; i < columnNames.length; i++) {
tableColumnV.add(columnNames[i]);
}
tableModel.setDataVector(dao.sMenuOfSell(), tableColumnV);
JDBC.closeConnection();
table = new MTable(tableModel);
if (table.getRowCount() > 0)
table.setRowSelectionInterval(0, 0);
scrollPane.setViewportView(table);
final JLabel leftPlaceholderLabel = new JLabel();
leftPlaceholderLabel.setPreferredSize(new Dimension(20, 20));
getContentPane().add(leftPlaceholderLabel, BorderLayout.WEST);
final JPanel exitPanel = new JPanel();
final FlowLayout flowLayout = new FlowLayout();
flowLayout.setAlignment(FlowLayout.RIGHT);
exitPanel.setLayout(flowLayout);
getContentPane().add(exitPanel, BorderLayout.SOUTH);
final JButton exitButton = new JButton();
exitPanel.add(exitButton);
exitButton.setText("退出");
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
final JLabel bottomPlaceholderLabel = new JLabel();
bottomPlaceholderLabel.setPreferredSize(new Dimension(10, 40));
exitPanel.add(bottomPlaceholderLabel);
final JLabel rightPlaceholderLabel = new JLabel();
rightPlaceholderLabel.setPreferredSize(new Dimension(20, 20));
getContentPane().add(rightPlaceholderLabel, BorderLayout.EAST);
//
}
private String getNextNum(String maxNum) {
String date = Today.getDateOfNum().substring(2);
if (maxNum == null) {
maxNum = date + "01";
} else {
if (maxNum.subSequence(0, 6).equals(date)) {
maxNum = maxNum.substring(6);
int nextNum = Integer.valueOf(maxNum) + 1;
if (nextNum < 10)
maxNum = date + "0" + nextNum;
else
maxNum = date + nextNum;
} else {
maxNum = date + "01";
}
}
return maxNum;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -