employeemanager.java~7~

来自「《深入浅出设计模式》的完整源代码」· JAVA~7~ 代码 · 共 121 行

JAVA~7~
121
字号
package program;import employee.Employee;import employee.EmployeeMemento;import javax.swing.*;import javax.swing.undo.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class EmployeeManager{  private JButton loadButton = new JButton("Load");  private JButton saveButton = new JButton("Save");  private JButton undoSaveButton = new JButton("Undo Save");  private JTextField idText = new JTextField();;  private JTextField firstNameText = new JTextField();;  private JTextField lastNameText = new JTextField();;  private JTextField salaryText = new JTextField();;  private JFrame frame;  private Vector employees;  private UndoManager um;  // here is the employee object we will be working with  private Employee employee = new Employee();  public static void main(String[] args){      new EmployeeManager();  }  EmployeeManager(){    frame = new JFrame("Memento Pattern Example");    um=new UndoManager();    employees=new Vector();    frame.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {        System.exit(0);      }    });    // create input field panel    JPanel topPanel = new JPanel();    topPanel.setLayout(new GridLayout(4,2));    topPanel.add(new JLabel("ID:"));    topPanel.add(idText);    topPanel.add(new JLabel("First Name:"));    topPanel.add(firstNameText);    topPanel.add(new JLabel("Last Name:"));    topPanel.add(lastNameText);    topPanel.add(new JLabel("Salary:"));    topPanel.add(salaryText);    // create button panel    JPanel bottomPanel = new JPanel();    bottomPanel.setLayout(new FlowLayout());    bottomPanel.add(loadButton);    bottomPanel.add(saveButton);    bottomPanel.add(undoSaveButton);    // set the action listeners to each button    loadButton.addActionListener(new ActionListener(){      public void actionPerformed(ActionEvent e){        loadEmployee();      }    });    saveButton.addActionListener(new ActionListener(){      public void actionPerformed(ActionEvent e){        saveEmployee();      }    });    undoSaveButton.addActionListener(new ActionListener(){      public void actionPerformed(ActionEvent e){        undoEmployee();      }    });    // add the panels to the frame and show it    frame.getContentPane().setLayout(new BorderLayout());    frame.getContentPane().add(topPanel, BorderLayout.CENTER);    frame.getContentPane().add(bottomPanel, BorderLayout.SOUTH);    frame.pack();    frame.setVisible(true);    // display the employee for the first time    loadEmployee();  }  private void loadEmployee(){    idText.setText(""+employee.getId());    firstNameText.setText(employee.getFirstName());    lastNameText.setText(employee.getLastName());    salaryText.setText(""+employee.getSalary());  }  private void saveEmployee(){    EmployeeMemento memento;    employee.setId(Integer.parseInt(idText.getText()));    employee.setFirstName(firstNameText.getText());    employee.setLastName(lastNameText.getText());    employee.setSalary(Integer.parseInt(salaryText.getText()));    memento = employee.getMemento();    employees.addElement(memento);  }  private void undoEmployee(){    /*    if(memento==null){      JOptionPane.showMessageDialog(frame, "No memento saved yet.",        "Error", JOptionPane.ERROR_MESSAGE);    }*/    EmployeeMemento memento;    memento=(EmployeeMemento)employees.lastElement();    employee.setMemento(memento);    employees.removeElement(memento);    loadEmployee();  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?