📄 addressbookentryframe.java
字号:
// Fig. 8.37: AddressBookEntryFrame.java// A subclass of JInternalFrame customized to display and // an AddressBookEntry or set an AddressBookEntry's properties// based on the current data in the UI.package com.deitel.advjhtp1.jdbc.addressbook;// Java core packagesimport java.util.*;import java.awt.*;// Java extension packagesimport javax.swing.*;public class AddressBookEntryFrame extends JInternalFrame { // HashMap to store JTextField references for quick access private HashMap fields; // current AddressBookEntry set by AddressBook application private AddressBookEntry person; // panels to organize GUI private JPanel leftPanel, rightPanel; // static integers used to determine new window positions // for cascading windows private static int xOffset = 0, yOffset = 0; // static Strings that represent name of each text field. // These are placed on JLabels and used as keys in // HashMap fields. private static final String FIRST_NAME = "First Name", LAST_NAME = "Last Name", ADDRESS1 = "Address 1", ADDRESS2 = "Address 2", CITY = "City", STATE = "State", ZIPCODE = "Zipcode", PHONE = "Phone", EMAIL = "Email"; // construct GUI public AddressBookEntryFrame() { super( "Address Book Entry", true, true ); fields = new HashMap(); leftPanel = new JPanel(); leftPanel.setLayout( new GridLayout( 9, 1, 0, 5 ) ); rightPanel = new JPanel(); rightPanel.setLayout( new GridLayout( 9, 1, 0, 5 ) ); createRow( FIRST_NAME ); createRow( LAST_NAME ); createRow( ADDRESS1 ); createRow( ADDRESS2 ); createRow( CITY ); createRow( STATE ); createRow( ZIPCODE ); createRow( PHONE ); createRow( EMAIL ); Container container = getContentPane(); container.add( leftPanel, BorderLayout.WEST ); container.add( rightPanel, BorderLayout.CENTER ); setBounds( xOffset, yOffset, 300, 300 ); xOffset = ( xOffset + 30 ) % 300; yOffset = ( yOffset + 30 ) % 300; } // set AddressBookEntry then use its properties to // place data in each JTextField public void setAddressBookEntry( AddressBookEntry entry ) { person = entry; setField( FIRST_NAME, person.getFirstName() ); setField( LAST_NAME, person.getLastName() ); setField( ADDRESS1, person.getAddress1() ); setField( ADDRESS2, person.getAddress2() ); setField( CITY, person.getCity() ); setField( STATE, person.getState() ); setField( ZIPCODE, person.getZipcode() ); setField( PHONE, person.getPhoneNumber() ); setField( EMAIL, person.getEmailAddress() ); } // store AddressBookEntry data from GUI and return // AddressBookEntry public AddressBookEntry getAddressBookEntry() { person.setFirstName( getField( FIRST_NAME ) ); person.setLastName( getField( LAST_NAME ) ); person.setAddress1( getField( ADDRESS1 ) ); person.setAddress2( getField( ADDRESS2 ) ); person.setCity( getField( CITY ) ); person.setState( getField( STATE ) ); person.setZipcode( getField( ZIPCODE ) ); person.setPhoneNumber( getField( PHONE ) ); person.setEmailAddress( getField( EMAIL ) ); return person; } // set text in JTextField by specifying field's // name and value private void setField( String fieldName, String value ) { JTextField field = ( JTextField ) fields.get( fieldName ); field.setText( value ); } // get text in JTextField by specifying field's name private String getField( String fieldName ) { JTextField field = ( JTextField ) fields.get( fieldName ); return field.getText(); } // utility method used by constructor to create one row in // GUI containing JLabel and JTextField private void createRow( String name ) { JLabel label = new JLabel( name, SwingConstants.RIGHT ); label.setBorder( BorderFactory.createEmptyBorder( 5, 5, 5, 5 ) ); leftPanel.add( label ); JTextField field = new JTextField( 30 ); rightPanel.add( field ); fields.put( name, field ); }} // end class AddressBookEntryFrame/************************************************************************** * (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall. * * All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -