Как передать массив объектов на кнопку?

У меня есть два класса: один называется Student а другой называется 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 кнопки?

2 ответа

Исходя из предоставленного вами кода, я полагаю, что есть хотя бы одна причина, по которой вы не получаете курсы.. потому что это не задано в процессе регистрации:) (Кроме того, синтаксис неверен, если у вас нет класса регистрации?) полное решение, но оно исправляет одну из проблем

public void registration(Course course){
     // listOfCourses[numCourse];
        listOfCourses[numCourse]=course;
      numCourse++;
}

Хорошо, для меня это пока не слишком понятно, но я добавлю код и скажу, поможет ли он вам.

Примечание: не тестировалось

Для студента (извините, я предпочитаю использовать списки вместо массивов):

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

Для вашего пользовательского интерфейса я только что создал "симуляцию" пользовательского интерфейса, я предполагаю, что вы реализовали что-то более полное... Я предполагаю, что вы инициализировали компоненты как глобальные переменные для вашего фрейма или панели или, по крайней мере, у вас есть методы для их получения.

public class UIHelper extends JFrame {

    Student student = new Student();
    JButton btnAction;
    JTable myTable;
    public UIHelper() {
        //Methods for creating UI 
        //.
        //.
        //.
        student.setId("stackrued");
        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();
    }

Надеюсь, я дам вам идею, с наилучшими пожеланиями.

Другие вопросы по тегам