?? 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 + -