2013-04-25 135 views
0

我有两类:一个叫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中做了一个表格按下BUTTOM 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

+0

你到底有什么问题? – 2013-04-25 18:16:42

+0

@MrD,这个问题我有是,我没有收到在某种程度上课程的数组,我可以把他们的内容JTable中 – Little 2013-04-25 18:17:32

+0

但你想拥有注册一个完整的用户界面?或者只是一个按钮,用于在应用程序中注册硬编码数据? – 2013-04-25 18:22:24

回答

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的“模拟”,我假设你已经实现了一些更完整的东西......我假设你已经初始化了组件作为全球变量哟你的框架或面板或至少你有方法让他们。

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

希望我给你一个想法,最好的问候。

1

从您提供的代码,我相信有ATLEAST一个原因你没有得到课程..因为它不是在注册过程中设置:)(同样的语法是不正确的,除非你有一个注册类?)这可能不是一个完整的解决方案,但它纠正了其中一个问题

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

抱歉它是一个错字,我所做的课程,无论如何,它仍然无法正常工作 – Little 2013-04-26 04:14:08

相关问题