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();
}
}