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 + -
显示快捷键?