📄 706234d280d90019124fc7c5db976065
字号:
package com.globalmethod.addressbook;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
public class AddressBook extends JFrame
{
private class NewAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
AddressBookEntryFrame entryFrame = createAddressBookEntryFrame();
entryFrame.setAddressBookEntry(new AddressBookEntry());
desktop.add(entryFrame);
entryFrame.setVisible(true);
}
public NewAction()
{
putValue("Name", "New");
putValue("SmallIcon", new ImageIcon(getClass().getResource("images/New24.png")));
putValue("ShortDescription", "New");
putValue("LongDescription", "Add a new address book entry");
putValue("MnemonicKey", new Integer(78));
}
}
private class SaveAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
AddressBookEntryFrame currentFrame = (AddressBookEntryFrame)desktop.getSelectedFrame();
AddressBookEntry person = currentFrame.getAddressBookEntry();
try
{
int personID = person.getPersonID();
String operation = personID != 0 ? "Update" : "Insertion";
if(personID == 0)
database.newPerson(person);
else
database.savePerson(person);
JOptionPane.showMessageDialog(desktop, operation + " successful");
}
catch(DataAccessException exception)
{
JOptionPane.showMessageDialog(desktop, exception, "DataAccessException", 0);
exception.printStackTrace();
}
currentFrame.dispose();
}
public SaveAction()
{
putValue("Name", "Save");
putValue("SmallIcon", new ImageIcon(getClass().getResource("images/Save24.png")));
putValue("ShortDescription", "Save");
putValue("LongDescription", "Save an address book entry");
putValue("MnemonicKey", new Integer(83));
}
}
private class DeleteAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
AddressBookEntryFrame currentFrame = (AddressBookEntryFrame)desktop.getSelectedFrame();
AddressBookEntry person = currentFrame.getAddressBookEntry();
if(person.getPersonID() == 0)
{
JOptionPane.showMessageDialog(desktop, "New entries must be saved before they can be deleted. \nTo cancel a new entry, simply close the window containing the entry");
return;
}
try
{
database.deletePerson(person);
JOptionPane.showMessageDialog(desktop, "Deletion successful");
}
catch(DataAccessException exception)
{
JOptionPane.showMessageDialog(desktop, exception, "Deletion failed", 0);
exception.printStackTrace();
}
currentFrame.dispose();
}
public DeleteAction()
{
putValue("Name", "Delete");
putValue("SmallIcon", new ImageIcon(getClass().getResource("images/Delete24.png")));
putValue("ShortDescription", "Delete");
putValue("LongDescription", "Delete an address book entry");
putValue("MnemonicKey", new Integer(68));
}
}
private class SearchAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
String lastName = JOptionPane.showInputDialog(desktop, "Enter last name");
if(lastName != null)
{
AddressBookEntry person = database.findPerson(lastName);
if(person != null)
{
AddressBookEntryFrame entryFrame = createAddressBookEntryFrame();
entryFrame.setAddressBookEntry(person);
desktop.add(entryFrame);
entryFrame.setVisible(true);
} else
{
JOptionPane.showMessageDialog(desktop, "Entry with last name \"" + lastName + "\" not found in address book");
}
}
}
public SearchAction()
{
putValue("Name", "Search");
putValue("SmallIcon", new ImageIcon(getClass().getResource("images/Find24.png")));
putValue("ShortDescription", "Search");
putValue("LongDescription", "Search for an address book entry");
putValue("MnemonicKey", new Integer(114));
}
}
private class ExitAction extends AbstractAction
{
public void actionPerformed(ActionEvent e)
{
shutDown();
}
public ExitAction()
{
putValue("Name", "Exit");
putValue("ShortDescription", "Exit");
putValue("LongDescription", "Terminate the program");
putValue("MnemonicKey", new Integer(120));
}
}
private JDesktopPane desktop;
private AddressBookDataAccess database;
Action newAction;
Action saveAction;
Action deleteAction;
Action searchAction;
Action exitAction;
public AddressBook()
{
super("地址簿");
try
{
database = new MySQLDataAccess();
}
catch(Exception exception)
{
exception.printStackTrace();
System.exit(1);
}
JToolBar toolBar = new JToolBar();
JMenu fileMenu = new JMenu("文件");
fileMenu.setMnemonic('F');
newAction = new NewAction();
saveAction = new SaveAction();
saveAction.setEnabled(false);
deleteAction = new DeleteAction();
deleteAction.setEnabled(false);
searchAction = new SearchAction();
exitAction = new ExitAction();
toolBar.add(newAction);
toolBar.add(saveAction);
toolBar.add(deleteAction);
toolBar.add(new javax.swing.JToolBar.Separator());
toolBar.add(searchAction);
fileMenu.add(newAction);
fileMenu.add(saveAction);
fileMenu.add(deleteAction);
fileMenu.addSeparator();
fileMenu.add(searchAction);
fileMenu.addSeparator();
fileMenu.add(exitAction);
JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
setJMenuBar(menuBar);
desktop = new JDesktopPane();
Container c = getContentPane();
c.add(toolBar, "North");
c.add(desktop, "Center");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event)
{
shutDown();
}
});
Toolkit toolkit = getToolkit();
Dimension dimension = toolkit.getScreenSize();
setBounds(100, 100, dimension.width - 200, dimension.height - 200);
setVisible(true);
}
private void shutDown()
{
database.close();
System.exit(0);
}
private AddressBookEntryFrame createAddressBookEntryFrame()
{
AddressBookEntryFrame frame = new AddressBookEntryFrame();
setDefaultCloseOperation(2);
frame.addInternalFrameListener(new InternalFrameAdapter() {
public void internalFrameActivated(InternalFrameEvent event)
{
saveAction.setEnabled(true);
deleteAction.setEnabled(true);
}
public void internalFrameDeactivated(InternalFrameEvent event)
{
saveAction.setEnabled(false);
deleteAction.setEnabled(false);
}
});
return frame;
}
public static void main(String args[])
{
new AddressBook();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -