StudentEditPanel.java



import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

/** 個々のStudentのオブジェクトの状態を編集する StudentEditPanelクラス */

public class StudentEditPanel extends Panel {

   /** Labelのオブジェクトの配列 */

          protected Label fieldLabels[] = new Label[4];

   /** TextFieldのオブジェクトの配列 */

          protected TextField inputFields[] = new TextField[4];
 
   /** ラベルに設定するフィールド名 */

          private static final String fieldNames[]
            = { "学年", "学科", "番号", "氏名" };

   /** デフォルトの Studentのオブジェクト */

          private static final Student defaultStudent
            = new Student( 1, "英文学科", 971001, "北星花子" );
 
   /** 編集中の Studentのオブジェクト */

          protected Student current;
 
   /** コンストラクタ */

     public StudentEditPanel( Student current ){

          super();  // 親 Panelの生成
          setLayout( new GridLayout( 4, 2 ) );

          for( int i=0; i<4; i++ ) {

               fieldLabels[i] = new Label( fieldNames[i] );
               add( fieldLabels[i] );
               inputFields[i] = new TextField( 12 );
               add( inputFields[i] );
          }

          this.current = current;
          showCurrent();
     }

     public StudentEditPanel(){

           this( defaultStudent );
     }

   /** current オブジェクトを取り出すメソッド */

     public Student getCurrent() {

          return current;
     }

   /** current オブジェクトを設定するメソッド */

     public void setCurrent( Student current ) {

          this.current = current;
          showCurrent();
     }

   /** current オブジェクトの状態を表示するメソッド */

     public void showCurrent() {

          if( current == null ) {

              inputFields[0].setText( "" );
              inputFields[1].setText( "" );
              inputFields[2].setText( "" );
              inputFields[3].setText( "" );
          }
          else {

              inputFields[0].setText(
                      String.valueOf( current.getGrade() ) );
              inputFields[1].setText( current.getDepartment() );
              inputFields[2].setText(
                      String.valueOf( current.getNumber() ) );
              inputFields[3].setText( current.getName() );
          }
     }

   /** current オブジェクトの状態を再設定するメソッド */

     public void storeCurrent() {

          int grade, number;
          String department, name;
          try{
              grade = Integer.parseInt(
                                  inputFields[0].getText() );
              department = inputFields[1].getText();
              number = Integer.parseInt(
                                  inputFields[2].getText() );
              name = inputFields[3].getText();
          }
          catch( Exception e ){
              
              System.err.println( "不適切なデータが入力されました" );
              return;
          }
          current.setGrade( grade );
          current.setDepartment( department );
          current.setNumber( number );
          current.setName( name );
     }
 
   /** 単独で起動した時に呼び出されるメソッド(動作確認用) */
 
     public static void main( String argv[] ) {
 
          StudentEditPanel studentEditPanel = new StudentEditPanel();

          ExitableFrame frame
                  = new ExitableFrame("Student Edit Panel Test");
          frame.add( studentEditPanel, "Center" );
          frame.pack();
          frame.show();
     }
}