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