Note that there are some explanatory texts on larger screens.

plurals
  1. POArrayList Wont Add To JTable
    primarykey
    data
    text
    <p>been searching around but didnt find my solution to my ptoblem , I'm trying to display an ArrayList of Student enrolled in a course, in which I make use of a JTable and display it through a JOptionPane, My problem is, I'm not able to display the ArrayList of Students, here is my code:</p> <pre><code> public static void showStudentsEnrolled(int indx) { for(int x = 0; x&lt;Course.get(indx).getEnrollees().size(); x++){ System.out.println(Course.get(indx).getEnrollees().get(x).toString()); //display enrolled students } ArrayList&lt;Student&gt; enrolled = Course.get(indx).getEnrollees(); StudentsTableModel model = new StudentsTableModel(enrolled); JTable table = new JTable(model); JScrollPane pane = new JScrollPane(table); JPanel panel = new JPanel(new GridLayout()); panel.add(pane); panel.setPreferredSize(new Dimension(600,400)); JOptionPane.showMessageDialog(null,panel, "Students Enrolled", JOptionPane.INFORMATION_MESSAGE); } </code></pre> <p>You see, I have a custom table model that accepts an ArrayList as a parameter and use that as the data, I tried using another list that is present in my class which goes like this:</p> <pre><code> ArrayList&lt;Student&gt; enrolled = Student; // Student is an ArrayList of Student StudentsTableModel model = new StudentsTableModel(enrolled); </code></pre> <p>and it successfully populated the data in the table</p> <p>but when i try to get my real target which is:</p> <pre><code> ArrayList&lt;Student&gt; enrolled = Course.get(indx).getEnrollees(); StudentsTableModel model = new StudentsTableModel(enrolled); </code></pre> <p>the out come is an empty table, What could have caused this problem? </p> <p>Sorry, I have many classes involved here , so it took me some time get the necessary Codes, Here's the runnable code: </p> <pre><code> import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import java.io.Serializable; import java.util.*; import java.awt.*; public class Testy { Student stud1 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud2 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud3 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud4 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud5 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud6 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Student stud7 = new Student(2137019,1,"Havard","Jhon",'M',"BSCS"); Course course1 = new Course(9003,"ICS 112","Programming Fundamentals",2,"2:30","4:00","MTH","S521"); Course course2 = new Course(9003,"ICS 112","Programming Fundamentals",2,"2:30","4:00","MTH","S521"); Course course3 = new Course(9003,"ICS 112","Programming Fundamentals",2,"2:30","4:00","MTH","S521"); static ArrayList&lt;Student&gt; student = new ArrayList&lt;Student&gt;(); static ArrayList&lt;Course&gt; course = new ArrayList&lt;Course&gt;(); public Testy(){ student.add(stud1); student.add(stud2); student.add(stud3); student.add(stud4); student.add(stud5); student.add(stud6); student.add(stud7); course.add(course1); course.add(course2); course.add(course3); //Enroll a student for(int x = 0; x &lt; 5; x++){ course.get(0).enroll(student.get(x));} // I want to show the enrolled students in course index 0; showStudentsEnrolled(0); } public static void main (String args[]){ new Testy(); } public static void showStudentsEnrolled(int indx) { ArrayList&lt;Student&gt; enrolled = course.get(indx).getEnrollees(); for(int x = 0; x&lt;enrolled.size(); x++){ System.out.println(enrolled.get(x).toString()); //display enrolled students } StudentsTableModel model = new StudentsTableModel(enrolled); JTable table = new JTable(model); JScrollPane pane = new JScrollPane(table); JPanel panel = new JPanel(new GridLayout()); panel.add(pane); panel.setPreferredSize(new Dimension(600,400)); JOptionPane.showMessageDialog(null,panel, "Students Enrolled", JOptionPane.INFORMATION_MESSAGE); } class Student { private int id ; private int yr ; private String fname; private String gname; private char mname; private String course; private boolean isEnrolled ; private ArrayList&lt;Course&gt; eCourse = new ArrayList&lt;Course&gt;(); public Student(int id,int yr, String f, String g, char m, String c){ this.id = id; this.yr = yr; fname = f; gname = g; mname = m; course = c; isEnrolled = false; } //GET THE ID NUMBER OF A STUDENT public int getId(){ return id; } //GET THE YEAR LEVEL OF A STUDENT public int getYr(){ return yr; } //GET THE FAMILY NAME OF A STUDENT public String getFname(){ return fname; } //GET THE GIVEN NAME OF A STUDENT public String getGname(){ return gname; } //GET THE MIDDILE INITIAL OF A STUDENT public char getMname(){ return mname; } //GET THE COURSE OF A STUDENT public String getCourse(){ return course; } //SET ID NUMBER OF A STUDENT public void setId(int ids){ id = ids; } //SET YEAR LEVEL OF A STUDENT public void setYr(int yrs){ yr = yrs; } //SET THE FAMILY NAME OF A STUDENT public void setFname(String fnames){ fname = fnames; } //SET THE GIVEN NAME OF A STUDENT public void setGname(String gnames){ gname = gnames; } //SET THE MIDDILE INITIAL OF A STUDENT public void setMname(char mnames){ mname = mnames; } //SET THE COURSE OF A STUDENT public void setCourse(String courses){ course = courses; } } class Course implements Serializable { private String startTime; private String endTime; private int units; private int courseCode; private String courseNumber; private String courseDescription; private String room; private String days; private String status; private String schedule; private boolean open ; private ArrayList &lt;Student&gt; enrollees = new ArrayList&lt;Student&gt;(); /**CONSTRUCTOR FOR THE COURSE/* * accepts values to be passed on Course * @param classCode int that will serve as the class code of the class * @param courseNum string subject of the course * @param courseDes string descriptive title of the course * @param unit int units of the course * @param time1 String time in which the course begins * @param time2 String time in which the course dismiss * @param day String days abbreviation in which the course takes place * @param rooms String room in which the course takes place */ public Course(int classCode,String courseNum,String courseDes,int unit,String time1,String time2,String day,String rooms){ courseCode = classCode; courseNumber = courseNum; courseDescription = courseDes; units = unit; startTime =time1; endTime = time2; room = rooms; days = day; schedule = startTime + "-" + endTime + " " + days; open = true; status = "Open"; } public void enroll(Student student) { enrollees.add(student); } //get the students enrolled in the course public ArrayList &lt;Student&gt; getEnrollees(){ return enrollees; } } public static class StudentsTableModel extends AbstractTableModel { boolean DEBUG = false; private String[] columnNames = {"ID Number","Last Name","First Name","Middle Initial","Course","Year"}; private static ArrayList&lt;Student&gt; data ; public StudentsTableModel(ArrayList&lt;Student&gt; students){ data = new ArrayList&lt;Student&gt;(); for(int x = 0; x&lt;students.size(); x++){ //checks if the student is available for enrollment if(students.get(x).isEnrolled() == false){ data.add(students.get(x));} else if(students.get(x).isEnrolled() == true){// Do nothing , don't add to the list } } // save changes fireTableDataChanged(); } public static void setArrayData(ArrayList&lt;Student&gt; student){ data = student; } public static ArrayList&lt;Student&gt; getCurrentArray(){ return data; } public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.size(); } public String getColumnName(int col) { return columnNames[col]; } // Customize getValueAt method public Object getValueAt(int row, int col) { Object object = null; switch (col){ case 0 : object = data.get(row).getId(); break; case 1 : object = data.get(row).getFname(); break; case 2 : object = data.get(row).getGname(); break; case 3 : object = data.get(row).getMname(); break; case 4 : object = data.get(row).getCourse(); break; case 5 : object = data.get(row).getYr(); break; } return object; } public Class&lt;? extends Object&gt; getColumnClass(int c) { Object a = 1; Object b = "String"; Object e = 'd'; if(c == 0 || c==5) return a.getClass(); else if(c==1 || c==2 || c==4) return b.getClass(); else if(c==3) return e.getClass(); else{ return getValueAt(0,c).getClass(); } } // Make all the fields constant public boolean isCellEditable(int row, int col) { if (col &lt; 5) { return false; } else { return true; } } // Customize setValueAt method public void setValueAt(Object value, int row, int col) { if (DEBUG) { System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of " + value.getClass() + ")"); } switch (col){ case 0: data.get(row).setId((Integer)value); break; case 1: data.get(row).setFname((String)value); break; case 2: data.get(row).setGname((String)value); break; case 3: data.get(row).setMname((Character)value); break; case 4: data.get(row).setCourse((String)value); break; case 5: data.get(row).setYr((Integer)value); break; } fireTableCellUpdated(row, col); } } } </code></pre> <p>Still an empty table; Can somebody get it work for me ? it may be a simple problem but I'm so confused to figure out the cause , thanks in advance</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload