shippinghub.java
来自「32个java程序源代码」· Java 代码 · 共 815 行 · 第 1/2 页
JAVA
815 行
); // end call to addActionListener
// set up nextJButton
nextJButton = new JButton();
nextJButton.setBounds( 559, 248, 85, 26 );
nextJButton.setText( "Next >" );
nextJButton.setMnemonic( KeyEvent.VK_N );
nextJButton.setEnabled( false );
contentPane.add( nextJButton );
nextJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when nextJButton is pressed
public void actionPerformed( ActionEvent event )
{
nextJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
// set properties of application's window
setTitle( "Shipping Hub" ); // set title bar string
setSize( 663, 440 ); // set window size
setVisible( true ); // display window
} // end method createUserInterface
// send parcel to truck
private void shipJButtonActionPerformed( ActionEvent event )
{
// display message if truck is full
if ( toBeShippedArrayList.size() < 5 )
{
// load next Parcel in list if there is one
if ( parcelsArrayList.size() > 0 )
{
if ( position < parcelsArrayList.size() - 1 )
{
position++; // go to next Parcel
}
else
{
position = 0; // go to begining
}
// load information of current Parcel
loadParcel();
} // end if
} // end if
else // display error message
{
JOptionPane.showMessageDialog( null,
"Truck can only hold 5 parcels.", "Limit Exceeded",
JOptionPane.WARNING_MESSAGE );
// user can no longer add Parcels to truck
shipJButton.setEnabled( false );
}
} // end method shipJButtonActionPerformed
// prepare to scan a new Parcel
private void scanNewJButtonActionPerformed( ActionEvent event )
{
// clear JTextFields
clearComponents();
// set arrival time
Date now = new Date();
arrivedAtJTextField.setText( now.toString() );
// give Parcel unique ID number
parcelID++;
parcelIDJTextField.setText( String.valueOf( parcelID ) );
// create new Parcel object
newParcel = new Parcel( parcelID,
arrivedAtJTextField.getText() );
// disable appropriate components
setJButtons( false );
// enable or make editable appropriate components
addJButton.setEnabled( true );
parcelInformationJPanelEditable( true );
// grab focus
nameJTextField.requestFocusInWindow();
} // end method scanNewJButtonActionPerformed
// add a new Parcel
private void addJButtonActionPerformed( ActionEvent event )
{
// set information for new Parcel
setParcelData();
// add new Parcel to parcelsArrayList
parcelsArrayList.add( newParcel );
position = parcelsArrayList.size() - 1;
// disable or make uneditable appropriate components
addJButton.setEnabled( false );
parcelInformationJPanelEditable( false );
// enable appropriate components
setJButtons( true );
// change selected item in parcelStateJComboBox
parcelStateJComboBox.setSelectedIndex(
stateJComboBox.getSelectedIndex() );
} // end method addJButtonActionPerformed
// remove a Parcel
private void removeJButtonActionPerformed( ActionEvent event )
{
// retrieve the state of the current Parcel
String stateSelected = newParcel.getState();
// if same state is selected, remove ID number from
// parcelStateJList
if ( stateSelected.equals(
parcelStateJComboBox.getSelectedItem() ) )
{
// index of current Parcel
parcelStateArrayList.remove( newParcel );
// reset parcelStateJList data
parcelStateJList.setListData(
parcelStateArrayList.toArray() );
} // end if
// remove current Parcel from parcelsArrayList
parcelsArrayList.remove( position );
// load next Parcel in list if there is one
if ( parcelsArrayList.size() > 0 )
{
if ( position >= parcelsArrayList.size() )
{
position = 0; // go to beginning
}
loadParcel();
}
else
{
// if no other Parcels remain
clearComponents();
}
setJButtons( true ); // enabled appropriate JButtons
// set focus to scanNewJButton
scanNewJButton.requestFocusInWindow();
} // end method removeJButtonActionPerformed
// allow user to edit Parcel information
private void editJButtonActionPerformed( ActionEvent event )
{
// disable appropriate components
setJButtons( false );
// make user able to update Parcel information
updateJButton.setEnabled( true );
parcelInformationJPanelEditable( true );
} // end method editJButtonActionPerformed
// move to next Parcel
private void updateJButtonActionPerformed( ActionEvent event )
{
setParcelData(); // update information
// enable or make editable appropriate components
setJButtons( true );
// disable or make uneditable appropriate components
updateJButton.setEnabled( false );
parcelInformationJPanelEditable( false );
// change selected item in parcelStateJComboBox
parcelStateJComboBox.setSelectedIndex(
stateJComboBox.getSelectedIndex() );
} // end method updateJButtonActionPerformed
// move to previous Parcel
private void backJButtonActionPerformed( ActionEvent event )
{
if ( position > 0 )
{
position--; // move position back by 1
}
else // go to last element in list
{
position = parcelsArrayList.size() - 1;
}
// set and load current Parcel
loadParcel();
} // end method backJButtonActionPerformed
// move to next Parcel
private void nextJButtonActionPerformed( ActionEvent event )
{
if ( position < parcelsArrayList.size() - 1 )
{
position++; // move position forward by 1
}
else
{
position = 0; // go to first element in list
}
// load information of current Parcel
loadParcel();
} // end method nextJButtonActionPerformed
// change the list of Parcels in the parcelStateJList
private void parcelStateJComboBoxActionPerformed(
ActionEvent event )
{
// create string to compare states
String state =
( String ) parcelStateJComboBox.getSelectedItem();
// create iterator
Iterator parcelIterator = parcelsArrayList.iterator();
// clear parcelStateArrayList
parcelStateArrayList.clear();
// create parcelStateArrayList with ID numbers of Parcels
// to be displayed
while ( parcelIterator.hasNext() )
{
// create temporary Parcel object
Parcel currentParcel = ( Parcel ) parcelIterator.next();
// add Parcel ID to parcelStateArrayList
if ( currentParcel.getState() == state )
{
parcelStateArrayList.add( String.valueOf(
currentParcel.getParcelID() ) );
}
} // end while
// display parcelStateArrayList in parcelStateJList
parcelStateJList.setListData(
parcelStateArrayList.toArray() );
} // end method parcelStateJComboBoxActionPerformed
// display Parcel information in JOptionPane
private void parcelStateJListMouseDoubleClicked(
MouseEvent event )
{
// selected Parcel number
int number = Integer.parseInt( String.valueOf(
parcelStateJList.getSelectedValue() ) );
// create Iterator
Iterator parcelIterator = parcelsArrayList.iterator();
// create ArrayList with ID numbers of Parcels to be displayed
while ( parcelIterator.hasNext() )
{
// create temporary Parcel object
Parcel currentParcel = ( Parcel ) parcelIterator.next();
// display JOptionPane
if ( currentParcel.getParcelID() == number )
{
JOptionPane.showMessageDialog( null,
"Parcel " + currentParcel.getParcelID()
+ "\nArrived at: " + currentParcel.getArrivalTime()
+ "\nName: " + currentParcel.getName()
+ "\nAddress: " + currentParcel.getAddress()
+ "\nCity: " + currentParcel.getCity()
+ "\nState: " + currentParcel.getState()
+ "\nZip Code: " + currentParcel.getZip(),
"Parcel Information", JOptionPane.INFORMATION_MESSAGE );
} // end if
} // end while
} // end method parcelStateJListMouseDoubleClicked
// set all information about the Parcel
private void setParcelData()
{
newParcel.setName( nameJTextField.getText() );
newParcel.setAddress( addressJTextField.getText() );
newParcel.setCity( cityJTextField.getText() );
newParcel.setState( states[
stateJComboBox.getSelectedIndex() ] );
newParcel.setZip( Integer.parseInt(
zipJTextField.getText() ) );
} // end method setParcelData
// display all information about the Parcel
private void loadParcel()
{
// retrieve package from list
newParcel = ( Parcel ) parcelsArrayList.get( position );
// display package data
arrivedAtJTextField.setText( newParcel.getArrivalTime() );
parcelIDJTextField.setText(
String.valueOf( newParcel.getParcelID() ) );
nameJTextField.setText( newParcel.getName() );
addressJTextField.setText( newParcel.getAddress() );
cityJTextField.setText( newParcel.getCity() );
stateJComboBox.setSelectedItem( newParcel.getState() );
zipJTextField.setText( String.valueOf( newParcel.getZip() ) );
} // end method loadParcel
// clear all information about the Parcel
private void clearComponents()
{
nameJTextField.setText( "" );
addressJTextField.setText( "" );
cityJTextField.setText( "" );
zipJTextField.setText( "" );
arrivedAtJTextField.setText( "" );
parcelIDJTextField.setText( "" );
} // end method clearComponents
// enabled/disable JButtons
private void setJButtons( boolean state )
{
backJButton.setEnabled( state );
scanNewJButton.setEnabled( state );
removeJButton.setEnabled( state );
editJButton.setEnabled( state );
nextJButton.setEnabled( state );
// disable navigation if not multiple packages
if ( parcelsArrayList.size() < 2 )
{
nextJButton.setEnabled( false );
backJButton.setEnabled( false );
}
// if no items, disable Remove, Edit and Update JButtons
if ( parcelsArrayList.size() == 0 )
{
editJButton.setEnabled( false );
updateJButton.setEnabled( false );
removeJButton.setEnabled( false );
}
} // end method setJButtons
// make editable or uneditable components
// in parcelInformationJPanel
private void parcelInformationJPanelEditable( boolean editable )
{
nameJTextField.setEditable( editable );
addressJTextField.setEditable( editable );
cityJTextField.setEditable( editable );
stateJComboBox.setEnabled( editable );
zipJTextField.setEditable( editable );
} // end method parcelInformationJPanelEditable
// main method
public static void main( String[] args )
{
ShippingHub application = new ShippingHub();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
} // end method main
} // end class ShippingHub
/**************************************************************************
* (C) Copyright 1992-2004 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. 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 + =
减小字号Ctrl + -
显示快捷键?