package com.iailab.netsdk.demo.frame.TargetRecognition; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.iailab.netsdk.demo.module.TargetRecognitionModule; import com.sun.jna.Memory; import com.iailab.netsdk.common.*; import com.iailab.netsdk.lib.NetSDKLib.*; import com.iailab.netsdk.lib.ToolKits; public class ModifyPersonDialog extends JDialog{ /** * */ private static final long serialVersionUID = 1L; private String groupId = ""; private String groupName = ""; private String uid = ""; private String pszFileDst = ""; private Memory memory = null; private CANDIDATE_INFOEX stuCandidate = null; private WindowCloseListener listener; public void addWindowCloseListener(WindowCloseListener listener) { this.listener = listener; } /** * @param groupId 人脸库ID * @param groupName 人脸库名称 * @param uid 人员标识符 * @param pszFileDst 下载到本地的图片路径 * @param memory 图片数据 * @param stuCandidate 人员信息 */ public ModifyPersonDialog(String groupId, String groupName, String uid, String pszFileDst, Memory memory, CANDIDATE_INFOEX stuCandidate){ setTitle(Res.string().getModifyPerson()); setLayout(new BorderLayout()); setModal(true); pack(); setSize(520, 400); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 释放窗体 this.groupId = groupId; this.groupName = groupName; this.uid = uid; this.pszFileDst = pszFileDst; this.memory = memory; this.stuCandidate = stuCandidate; FaceServerAddPanel faceServerAddPanel = new FaceServerAddPanel(); add(faceServerAddPanel, BorderLayout.CENTER); showPersonInfo(); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ dispose(); } }); } public class FaceServerAddPanel extends JPanel{ /** * */ private static final long serialVersionUID = 1L; public FaceServerAddPanel() { BorderEx.set(this, "", 4); setLayout(new BorderLayout()); JPanel imagePanel = new JPanel(); JPanel personInfoPanel = new JPanel(); Dimension dimension = this.getPreferredSize(); dimension.height = 400; dimension.width = 250; personInfoPanel.setPreferredSize(dimension); add(imagePanel, BorderLayout.CENTER); add(personInfoPanel, BorderLayout.WEST); /////////// 添加的人脸图片面板 ////////////////// imagePanel.setLayout(new BorderLayout()); addImagePanel = new PaintPanel(); // 添加的人员信息图片显示 selectImageBtn = new JButton(Res.string().getSelectPicture()); imagePanel.add(addImagePanel, BorderLayout.CENTER); imagePanel.add(selectImageBtn, BorderLayout.SOUTH); ////////// 添加的人脸信息面板 ///////////////// personInfoPanel.setLayout(new FlowLayout()); JLabel goroupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER); JLabel goroupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER); JLabel uidLabel = new JLabel(Res.string().getUid(), JLabel.CENTER); JLabel nameLabel = new JLabel(Res.string().getName(), JLabel.CENTER); JLabel sexLabel = new JLabel(Res.string().getSex(), JLabel.CENTER); JLabel birthdayLabel = new JLabel(Res.string().getBirthday(), JLabel.CENTER); JLabel idTypeLabel = new JLabel(Res.string().getIdType(), JLabel.CENTER); JLabel idLabel = new JLabel(Res.string().getIdNo(), JLabel.CENTER); Dimension dimension2 = new Dimension(); dimension2.width = 80; dimension2.height = 20; uidLabel.setPreferredSize(dimension2); goroupIdLabel.setPreferredSize(dimension2); goroupNameLabel.setPreferredSize(dimension2); nameLabel.setPreferredSize(dimension2); sexLabel.setPreferredSize(dimension2); birthdayLabel.setPreferredSize(dimension2); idTypeLabel.setPreferredSize(dimension2); idLabel.setPreferredSize(dimension2); goroupIdTextField = new JTextField(); goroupNameTextField = new JTextField(); uidTextField = new JTextField(); nameTextField = new JTextField(); sexComboBox = new JComboBox(Res.string().getSexStrings()); birthdayBtn = new DateChooserJButtonEx(""); idTypeComboBox = new JComboBox(Res.string().getIdStrings()); idTextField = new JTextField(); birthdayCheckBox = new JCheckBox(); modifyBtn = new JButton(Res.string().getModify()); cancelBtn = new JButton(Res.string().getCancel()); birthdayBtn.setStartYear(1900); Dimension dimension3 = new Dimension(); dimension3.width = 150; dimension3.height = 20; sexComboBox.setPreferredSize(dimension3); idTypeComboBox.setPreferredSize(dimension3); goroupIdTextField.setPreferredSize(dimension3); goroupNameTextField.setPreferredSize(dimension3); uidTextField.setPreferredSize(dimension3); nameTextField.setPreferredSize(dimension3); idTextField.setPreferredSize(dimension3); birthdayBtn.setPreferredSize(new Dimension(130, 20)); birthdayCheckBox.setPreferredSize(new Dimension(20, 20)); modifyBtn.setPreferredSize(new Dimension(120, 20)); cancelBtn.setPreferredSize(new Dimension(120, 20)); goroupIdTextField.setEditable(false); goroupNameTextField.setEditable(false); uidTextField.setEditable(false); birthdayCheckBox.setSelected(true); goroupIdTextField.setText(groupId); goroupNameTextField.setText(groupName); uidTextField.setText(uid); personInfoPanel.add(goroupIdLabel); personInfoPanel.add(goroupIdTextField); personInfoPanel.add(goroupNameLabel); personInfoPanel.add(goroupNameTextField); personInfoPanel.add(uidLabel); personInfoPanel.add(uidTextField); personInfoPanel.add(nameLabel); personInfoPanel.add(nameTextField); personInfoPanel.add(sexLabel); personInfoPanel.add(sexComboBox); personInfoPanel.add(idTypeLabel); personInfoPanel.add(idTypeComboBox); personInfoPanel.add(idLabel); personInfoPanel.add(idTextField); personInfoPanel.add(birthdayLabel); personInfoPanel.add(birthdayBtn); personInfoPanel.add(birthdayCheckBox); personInfoPanel.add(modifyBtn); personInfoPanel.add(cancelBtn); birthdayCheckBox.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent arg0) { if(birthdayCheckBox.isSelected()) { birthdayBtn.setEnabled(true); } else { birthdayBtn.setEnabled(false); } } }); // 选择图片,获取图片的信息 selectImageBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { String picPath = ""; // 选择图片,获取图片路径,并在界面显示 picPath = ToolKits.openPictureFile(addImagePanel); if(!picPath.equals("")) { memory = null; try { memory = ToolKits.readPictureFile(picPath); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); // 修改人员信息 modifyBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { boolean bRet = TargetRecognitionModule.modifyPerson(groupId, uid, memory, nameTextField.getText(), sexComboBox.getSelectedIndex(), birthdayCheckBox.isSelected(), birthdayBtn.getText().toString(), idTypeComboBox.getSelectedIndex(), idTextField.getText()); if(bRet) { JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } dispose(); listener.windowClosing(); } }); // 取消,关闭 cancelBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { dispose(); } }); } } private void showPersonInfo() { File file = null; if(!pszFileDst.equals("")) { file = ToolKits.openPictureFile(pszFileDst, addImagePanel); } if(file != null) { file.delete(); } try { nameTextField.setText(new String(stuCandidate.stPersonInfo.szPersonName, "GBK").trim()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } sexComboBox.setSelectedIndex(stuCandidate.stPersonInfo.bySex & 0xff); idTypeComboBox.setSelectedIndex(stuCandidate.stPersonInfo.byIDType & 0xff); idTextField.setText(new String(stuCandidate.stPersonInfo.szID).trim()); if(stuCandidate.stPersonInfo == null) { birthdayCheckBox.setSelected(false); birthdayBtn.setText(birthdayBtn.getDate().toString()); } else { if(String.valueOf((int)stuCandidate.stPersonInfo.wYear).equals("0000") || String.valueOf((int)stuCandidate.stPersonInfo.wYear).equals("0") || String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff).equals("0") || String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff).equals("00") || String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff).equals("0") || String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff).equals("00")) { birthdayCheckBox.setSelected(false); birthdayBtn.setText(birthdayBtn.getDate().toString()); } else { birthdayCheckBox.setSelected(true); birthdayBtn.setText(String.valueOf((int)stuCandidate.stPersonInfo.wYear) + "-" + String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff) + "-" + String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff)); } } } // 添加人员信息窗口的组件 public PaintPanel addImagePanel; private JButton selectImageBtn; private JTextField goroupIdTextField; private JTextField goroupNameTextField; private JTextField uidTextField; public JTextField nameTextField; public JComboBox sexComboBox; public DateChooserJButtonEx birthdayBtn; public JComboBox idTypeComboBox; public JTextField idTextField; private JButton modifyBtn; private JButton cancelBtn; public JCheckBox birthdayCheckBox; }