package yaopin;
import javax.swing.JPanel;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import model.MedicineTypeDAO;
import model.MedicineTypeDTO;
public class MedicineType implements ActionListener
{
private static final long serialVersionUID = 1L;
private JPanel jSubPanel;
private JLabel jLabelCode, jLabelName;
private JTextField jTextCode, jTextName;
private JButton jBtnAdd, jBtnUpdate, jBtnSearch, jBtnCancel, jBtnDelete;
private DefaultTableModel tableModel;
private MedicineTypeDAO medicineTypeDAO;
private MedicineTypeDTO medicineTypeDTO = new MedicineTypeDTO();
public DefaultTableModel getTableModel()
{
if (tableModel == null)
{
tableModel=new DefaultTableModel(); // 与控件名要一致。
tableModel.addColumn("药品类别编码");
tableModel.addColumn("药品类别名称");
medicineTypeDAO = new MedicineTypeDAO();
for(MedicineTypeDTO user : medicineTypeDAO.fillMedicineType())
{
tableModel.addRow(user.toArray());
}
}
return tableModel;
}
public JPanel getJSubPanel()
{
if (jSubPanel == null)
{
jLabelCode = new JLabel("药品类别编码");
jLabelCode.setBounds(new Rectangle(160, 100, 80, 22));
jTextCode = new JTextField();
jTextCode.setName("药品类别编码");
jTextCode.setBounds(new Rectangle(250, 100, 300, 25));
jLabelName = new JLabel("药品类别名称");
jLabelName.setBounds(new Rectangle(160, 150, 80, 22));
jTextName = new JTextField();
jTextName.setName("药品类别名称");
jTextName.setBounds(new Rectangle(250, 150, 300, 25));
jBtnAdd = new JButton("添加");
jBtnAdd.setBounds(new Rectangle(100, 260, 75, 23));
jBtnAdd.addActionListener(this);
jBtnUpdate = new JButton("修改");
jBtnUpdate.setBounds(new Rectangle(210, 260, 75, 23));
jBtnUpdate.addActionListener(this);
jBtnDelete = new JButton("删除");
jBtnDelete.setBounds(new Rectangle(320, 260, 75, 23));
jBtnDelete.addActionListener(this);
jBtnSearch = new JButton("查询");
jBtnSearch.setToolTipText("可以根据员工编号,员工名称,部门编号进行联合查询。(支持模糊查询)");
jBtnSearch.setBounds(new Rectangle(500, 260, 75, 23));
jBtnSearch.addActionListener(this);
jBtnCancel = new JButton("取消");
jBtnCancel.setBounds(new Rectangle(610, 260, 75, 23));
jBtnCancel.addActionListener(this);
jSubPanel = new JPanel(null);
jSubPanel.setBounds(new Rectangle(33, 11, 509, 348));
jSubPanel.add(jLabelCode, null);
jSubPanel.add(jTextCode, null);
jSubPanel.add(jLabelName, null);
jSubPanel.add(jTextName, null);
jSubPanel.add(jBtnAdd, null);
jSubPanel.add(jBtnUpdate, null);
jSubPanel.add(jBtnDelete, null);
jSubPanel.add(jBtnSearch, null);
jSubPanel.add(jBtnCancel, null);
}
return jSubPanel;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(jBtnSearch))
{
while(tableModel.getRowCount() > 0)
{
tableModel.removeRow(0); // 先清空所有数据
}
medicineTypeDTO = new MedicineTypeDTO();
medicineTypeDTO.setTypeCode(jTextCode.getText());
medicineTypeDTO.setTypeName(jTextName.getText());
medicineTypeDAO.setMedicineTypeDTO(medicineTypeDTO);
for(MedicineTypeDTO user : medicineTypeDAO.searchMedicineType())
{
tableModel.addRow(user.toArray());
}
}
else if(e.getSource().equals(jBtnAdd))
{
if (jSubPanel.getName() != null)
{
JOptionPane.showMessageDialog(jSubPanel,"药品类别编号“" +jTextCode.getText()+ "”已存在!");
return;
}
medicineTypeDTO.setTypeCode(jTextCode.getText());
medicineTypeDTO.setTypeName(jTextName.getText());
medicineTypeDAO.setMedicineTypeDTO(medicineTypeDTO);
if(medicineTypeDAO.addMedicineType())
{
tableModel.addRow(medicineTypeDTO.toArray());
this.clearText();
}
else
JOptionPane.showMessageDialog(jSubPanel,"药品类别编号“" +jTextCode.getText()+ "”添加失败!");
}
else if(e.getSource().equals(jBtnUpdate))
{
if (jSubPanel.getName() == null)
{
JOptionPane.showMessageDialog(jSubPanel,"请选择要修改的行");
return;
}
medicineTypeDTO.setTypeCode(jTextCode.getText());
medicineTypeDTO.setTypeName(jTextName.getText());
medicineTypeDAO.setMedicineTypeDTO(medicineTypeDTO);
if(medicineTypeDAO.updateMedicineType())
{
int rowIndex = Integer.parseInt(jSubPanel.getName());
tableModel.removeRow(rowIndex);
tableModel.insertRow(rowIndex, medicineTypeDTO.toArray());
this.clearText();
}
else
JOptionPane.showMessageDialog(jSubPanel,"药品类别编号“" +jTextCode.getText()+ "”修改失败!");
}
else if(e.getSource().equals(jBtnDelete))
{
if (jSubPanel.getName() == null)
{
JOptionPane.showMessageDialog(jSubPanel,"请选择要删除的行");
return;
}
if(JOptionPane.showConfirmDialog(jSubPanel, "确实要删除员工编号“" + jTextCode.getText() + "”吗?", "系统提示", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0)
{
medicineTypeDTO.setTypeCode(jTextCode.getText());
medicineTypeDAO.setMedicineTypeDTO(medicineTypeDTO);
if(medicineTypeDAO.deleteMedicineType())
{
tableModel.removeRow(Integer.parseInt(jSubPanel.getName()));
this.clearText();
}
else
JOptionPane.showMessageDialog(jSubPanel,"药品类别编号“" +jTextCode.getText()+ "”删除失败!");
}
}
else
this.clearText();
}
private void clearText()
{
for(Component cpt : jSubPanel.getComponents())
{
if(cpt instanceof JTextField) //JAVA(instanceof) == .NET (is)
((JTextField)cpt).setText(null); // 清空文本框
}
jSubPanel.setName(null);
jTextCode.setEditable(true);
jTextCode.requestFocusInWindow(); // 设置焦点
}
}