0

2 つのクラスがあります。1 つは と呼ばれStudent、もう 1 つは と呼ばれCourseます。簡単な登録システムのシミュレーションをしたいと思います。

Studentのクラス部分には次の形式があります。

class Student
{
    private String id,
    private Course[] listOfCourses;
    private int numCourse;
    //accesing methods
    public registration(Course course){
          listOfCourses[numCourse]=course;
          numCourse++;
    }
    public Course[] getCourse(){
          return listOfCourses;
    }
}

Courseクラスの形式は次のとおりです。

class Course
{
     String id, String courseName;
     //constructor
     //accesing methods
}

Java Swingで作成したフォームでボタンを押すと、特定の学生が登録した科目の内容をjTableに表示したい。私は次のことを試しましたが、結果はまったくありませんでした:

Student e=new Student();
Course d[]=new Course[4];   
d=e.getCourses();    //to receive the array of Courses from the Student class
for (int i=0;i<d.length;i++){
      jTable2.setValueAt(estLista[i].getName(), i, 0);
}

どうすればそれができますか?Courseクラスに格納されている配列の内容をActionEventボタンの に取得する方法があるということですか?

4

2 に答える 2

1

あなたが提供したコードから、コースを取得できない理由が少なくとも1つあると思います..登録プロセスで設定されていないためです:) (また、登録クラスがない限り、構文は正しくありませんか?)完全な解決策ですが、問題の1つを修正します

public void registration(Course course){
     // listOfCourses[numCourse];
        listOfCourses[numCourse]=course;
      numCourse++;
}
于 2013-04-25T18:39:36.157 に答える
0

わかりました、まだあまり明確ではありませんが、コードをいくつか入れて、それが役立つかどうか教えてください.

注: テストされていません

学生の場合 (申し訳ありませんが、配列の代わりにリストを使用することを好みます):

public class Student {

    private String id;
    private List<Course> takenCourses;

    public void registration(Course course){
        if (this.takenCourses != null) {
            takenCourses.add(course);
        } else {
            System.err.println("an array has not been specified.");
        }
    }

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    public List<Course> getTakenCourses() {
        return takenCourses;
    }
    public void setTakenCourses(List<Course> takenCourses) {
        this.takenCourses = takenCourses;
    }

コースの場合:

public class Course {
    private String id;
    private String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

UI については、UI の「シミュレーション」を作成したところです。より完全なものを実装したと仮定します...フレームまたはパネルのグローバル変数としてコンポーネントを初期化したか、少なくともそれらを取得するメソッドがあると仮定します。

public class UIHelper extends JFrame {

    Student student = new Student();
    JButton btnAction;
    JTable myTable;
    public UIHelper() {
        //Methods for creating UI 
        //.
        //.
        //.
        student.setId("stackoverflowed");
        student.setTakenCourses(new ArrayList<Course>());

        btnAction = new JButton("Action!");
        //Methods of the JButton (...)
        btnAction.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                //Now just process since student is a global variable (you can set it static as well) but it shouldn't be a good practice at all
                for (Course course : student.getTakenCourses()) {
                    System.out.println(course.getName());
                             //Add the element to your table.
                }
            }
        });
    }

    public static void main(String[] args) {
        //Assume this is your UI
        new UIHelper();
    }

よろしくお願いします。

于 2013-04-25T18:39:24.440 に答える