2013-12-16 3 views
-1

У меня есть все данные, сохраняемые в массиве прямо сейчас. Как бы я переключил его на сохранение в ArrayList объектов? У меня есть базовый класс класса учеников, но мне нужна помощь, чтобы переключить его на сохранение в Arraylist. Вся помощь очень ценится. ArrayList создан на линии 28 и данные будут установлены на линии 300. Вопрос заключается в том, чтобы изменить код, чтобы хранить в ArrayList вместоКак мне переключиться с массива на ArrayList?

public class IAdvise extends JFrame { 

    DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    String[] columnNames = {"ID", "Name", "Major", "GPA", "Campus", "Home Address", "Phone Number", "Email", "Current CST courses", "Past CST course", "Fusture CST courses", "Notes"}; 
    Object[][] data = new Object[60][12]; 
    ArrayList<Student> al = new ArrayList<Student>(); 

    JTable table = new JTable(data, columnNames) { 
     @Override 
     public boolean isCellEditable(int row, int column) { 
     return false; 
     } 
    }; 
    JFrame frame, frame1; 
    JPanel buttonPanel, buttonPanel2, tablePanel, addPanel, editPanel; 
    JLabel labelID, labelName, labelMajor, labelGPA, labelCampus, labelAddress, labelPhone, labelEmail,labelCurrent, labelPast, labelFuture, labelNotes; 
    JTextField txtID, txtName, txtMajor, txtGPA, txtCampus, txtAddress, txtPhone, txtEmail, txtCurrent, txtPast, txtFuture, txtNotes; 
    JButton btnAdd, btnEdit, btnDelete, btnSort, btnSave, btnAddInput, btnCancel; 
    int keyCode, rowIndex, rowNumber, noOfStudents; 
    IAdvise.ButtonHandler bh = new IAdvise.ButtonHandler(); 


    public IAdvise() { 
     table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     table.getSelectionModel().addListSelectionListener(new IAdvise.RowListener()); 
     table.getColumnModel().getColumn(1).setPreferredWidth(150); 
     table.getColumnModel().getColumn(2).setPreferredWidth(150); 
     table.getColumnModel().getColumn(3).setPreferredWidth(50); 
     table.getColumnModel().getColumn(4).setPreferredWidth(200); 
     table.getColumnModel().getColumn(5).setPreferredWidth(250); 
     table.getColumnModel().getColumn(6).setPreferredWidth(150); 
     table.getColumnModel().getColumn(7).setPreferredWidth(150); 
     table.getColumnModel().getColumn(8).setPreferredWidth(150); 
     table.getColumnModel().getColumn(9).setPreferredWidth(150); 
     table.getColumnModel().getColumn(10).setPreferredWidth(150); 
     table.getColumnModel().getColumn(11).setPreferredWidth(150); 

     table.getTableHeader().setResizingAllowed(false); 
     table.getTableHeader().setReorderingAllowed(false); 
     JScrollPane scrollPane = new JScrollPane(table); 

     btnAdd = new JButton("Add Student"); 
     btnAdd.addActionListener(bh); 
     btnEdit = new JButton("EDIT"); 
     btnEdit.addActionListener(bh); 
     btnEdit.setEnabled(false); 
     btnDelete = new JButton("DELETE"); 
     btnDelete.addActionListener(bh); 
     btnDelete.setEnabled(false); 
     btnSort = new JButton("Update"); 
     btnSort.addActionListener(bh); 
     btnSave = new JButton("SAVE"); 
     btnSave.addActionListener(bh); 
     btnSave.setActionCommand("Save"); 


     btnAddInput = new JButton("Add Student"); 
     btnAddInput.addActionListener(bh); 
     btnAddInput.setActionCommand("AddInput"); 
     btnCancel = new JButton("Cancel"); 
     btnCancel.addActionListener(bh); 

     labelID = new JLabel("ID"); 
     labelName = new JLabel("NAME"); 
     labelMajor = new JLabel("Major"); 
     labelGPA = new JLabel("GPA"); 
     labelCampus = new JLabel("Campus"); 
     labelAddress = new JLabel("Address"); 
     labelPhone = new JLabel("Phone Number"); 
     labelEmail = new JLabel("Email"); 
     labelCurrent = new JLabel("Current CST courses"); 
     labelPast = new JLabel("Past CST courses"); 
     labelFuture = new JLabel("Future CST courses"); 
     labelNotes = new JLabel("Notes"); 
     txtID = new JTextField(20); 
     txtName = new JTextField(20); 
     txtMajor = new JTextField(20); 
     txtGPA = new JTextField(20); 
     txtCampus = new JTextField(20); 
     txtAddress = new JTextField(20); 
     txtPhone = new JTextField(20); 
     txtEmail = new JTextField(20); 
     txtCurrent = new JTextField(20); 
     txtPast = new JTextField(20); 
     txtFuture = new JTextField(20); 
     txtNotes = new JTextField(20); 


     txtID.setDocument(new IAdvise.JTextFieldLimit(8)); 

     txtID.addKeyListener(keyListener); 

     tablePanel = new JPanel(); 
     tablePanel.setLayout(new BoxLayout(tablePanel, BoxLayout.PAGE_AXIS)); 
     tablePanel.setBorder(BorderFactory.createEmptyBorder(10, 2, 0, 10)); 
     tablePanel.add(table.getTableHeader()); 
     tablePanel.add(table); 
     JScrollPane jScrollPane = new JScrollPane(tablePanel); 
     scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); 
     scrollPane.setBounds(50, 30, 300, 50); 
     JPanel contentPane = new JPanel(null); 
     contentPane.setPreferredSize(new Dimension(500, 400)); 
     contentPane.add(scrollPane); 

     buttonPanel = new JPanel(); 
     buttonPanel.setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 

     c.gridx = 0; 
     c.gridy = 0; 
     c.ipady = 20; 
     c.insets = new Insets(10, 10, 10, 10); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     buttonPanel.add(btnAdd, c); 
     c.gridx = 0; 
     c.gridy = 1; 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.ipady = 20; 
     c.insets = new Insets(10, 10, 10, 10); 
     buttonPanel.add(btnEdit, c); 
     c.gridx = 0; 
     c.gridy = 2; 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.ipady = 20; 
     c.insets = new Insets(10, 10, 10, 10); 
     buttonPanel.add(btnDelete, c); 
     c.gridx = 0; 
     c.gridy = 3; 
     c.ipady = 20; 
     c.insets = new Insets(10, 10, 10, 10); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     buttonPanel.add(btnSort, c); 
     c.gridx = 0; 
     c.gridy = 4; 
     c.ipady = 20; 
     c.insets = new Insets(10, 10, 10, 10); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     buttonPanel.add(btnSave, c); 

     frame = new JFrame("Tutoring Database"); 
     frame.setVisible(true); 
     frame.setResizable(false); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.add(tablePanel, BorderLayout.CENTER); 
     frame.add(buttonPanel, BorderLayout.EAST); 
     frame.pack(); 

     addPanel = new JPanel(); 
     addPanel.setLayout(new GridBagLayout()); 

     c.insets = new Insets(1, 0, 1, 1); 
     c.gridx = 0; 
     c.gridy = 0; 
     addPanel.add(labelID, c); 
     c.gridy = 1; 
     addPanel.add(labelName, c); 
     c.gridy = 2; 
     addPanel.add(labelMajor, c); 
     c.gridy = 3; 
     addPanel.add(labelGPA, c); 
     c.gridy = 4; 
     addPanel.add(labelCampus, c); 
     c.gridy = 5; 
     addPanel.add(labelAddress, c); 
     c.gridy = 6; 
     addPanel.add(labelPhone, c); 
     c.gridy = 7; 
     addPanel.add(labelEmail, c); 
     c.gridy = 8; 
     addPanel.add(labelCurrent, c); 
     c.gridy = 9; 
     addPanel.add(labelPast, c); 
     c.gridy = 10; 
     addPanel.add(labelFuture, c); 
     c.gridy = 11; 
     addPanel.add(labelNotes, c); 
     // text fields 
     c.gridx = 1; 
     c.gridy = 0; 
     c.ipady = 1; 
     addPanel.add(txtID, c); 
     c.gridy = 1; 
     c.ipady = 1; 
     addPanel.add(txtName, c); 
     c.gridy = 2; 
     c.ipady = 1; 
     addPanel.add(txtMajor, c); 
     c.gridy = 3; 
     c.ipady = 1; 
     addPanel.add(txtGPA, c); 
     c.gridy = 4; 
     c.ipady = 1; 
     addPanel.add(txtCampus, c); 
     c.gridy = 5; 
     c.ipady = 1; 
     addPanel.add(txtAddress, c); 
     c.gridy = 6; 
     c.ipady = 1; 
     addPanel.add(txtPhone, c); 
     c.gridy = 7; 
     c.ipady = 1; 
     addPanel.add(txtEmail, c); 
     c.gridy = 8; 
     c.ipady = 1; 
     addPanel.add(txtCurrent, c); 
     c.gridy = 9; 
     c.ipady = 1; 
     addPanel.add(txtPast, c); 
     c.gridy = 10; 
     c.ipady = 1; 
     addPanel.add(txtFuture, c); 
     c.gridy = 11; 
     c.ipady = 1; 
     addPanel.add(txtNotes, c); 

     buttonPanel2 = new JPanel(); 
     buttonPanel2.setLayout(new GridLayout(1, 1)); 
     buttonPanel2.add(btnAddInput); 
     buttonPanel2.add(btnCancel); 

     frame1 = new JFrame("Student Database"); 
     frame1.setVisible(false); 
     frame1.setResizable(false); 
     frame1.setDefaultCloseOperation(HIDE_ON_CLOSE); 
     frame1.add(addPanel, BorderLayout.CENTER); 
     frame1.add(buttonPanel2, BorderLayout.PAGE_END); 
     frame1.pack(); 
    }// end 

    KeyListener keyListener = new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
     keyCode = e.getKeyCode(); 

     if (!(keyCode >= 48 && keyCode <= 57) && !(keyCode >= 96 && keyCode <= 105) 
        && !(keyCode >= 37 && keyCode <= 40) && !(keyCode == 127 || keyCode == 8)) { 
      txtID.setEditable(false); 
     } 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
     txtID.setEditable(true); 
     } 
    }; 

    class RowListener implements ListSelectionListener { 
     @Override 
     public void valueChanged(ListSelectionEvent event) { 
     if (event.getValueIsAdjusting()) { 
      rowIndex = table.getSelectedRow(); 
      if (data[rowIndex][0] == null || data[rowIndex][0] == "") { 
       btnEdit.setEnabled(false); 
       btnDelete.setEnabled(false); 
      } else { 
       btnEdit.setEnabled(true); 
       btnDelete.setEnabled(true); 
      } 
     } 
     } 
    } 

    class ButtonHandler implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 

       if (e.getActionCommand().equals("Add Student")) { 
       txtID.setText(""); 
       txtName.setText(""); 
       txtMajor.setText(""); 
       txtGPA.setText(""); 
       txtCampus.setText(""); 
       txtAddress.setText(""); 
       txtPhone.setText(""); 
       txtEmail.setText(""); 
       txtCurrent.setText(""); 
       txtPast.setText(""); 
       txtFuture.setText(""); 
       txtNotes.setText(""); 
       Student student = new Student(txtID.getText(), txtName.getName(), txtMajor.getText(), txtGPA.getText(), txtCampus.getText(), txtAddress.getText(), txtPhone.getText(),txtEmail.getText(), txtCurrent.getText(), txtPast.getText(), txtFuture.getText(), txtNotes.getText()); 
       al.add(student); 

       frame1.setTitle("Add Student data"); // title bar name for add 
       frame1.setVisible(true); 

       } else if (e.getActionCommand().equals("EDIT")) { 
       txtID.setText(data[rowIndex][0] + ""); 
       txtName.setText(data[rowIndex][1] + ""); 
       txtMajor.setText(data[rowIndex][2] + ""); 
       txtGPA.setText(data[rowIndex][3] + ""); 
       txtCampus.setText(data[rowIndex][4] + ""); 
       txtAddress.setText(data[rowIndex][5] + ""); 
       txtPhone.setText(data[rowIndex][6] + ""); 
       txtEmail.setText(data[rowIndex][7] + ""); 
       txtCurrent.setText(data[rowIndex][8] + ""); 
       txtPast.setText(data[rowIndex][9] + ""); 
       txtFuture.setText(data[rowIndex][10] + ""); 
       txtNotes.setText(data[rowIndex][11] + ""); 
       txtID.setEditable(false); 
       frame1.setTitle("Enter Student data"); 
       btnAddInput.setActionCommand("Edit2"); 
       btnAddInput.setText("ACCEPT"); 

       frame1.setVisible(true); 
      } else if (e.getActionCommand().equals("DELETE")) { 
       int confirm = JOptionPane.showConfirmDialog(frame, "ARE YOU SURE?", "CONFIRM", 
         JOptionPane.YES_NO_OPTION); 

       if (confirm == 0) { 
        rowIndex = table.getSelectedRow(); 
        rowNumber = 0; 

        noOfStudents--; 
        for (int i = 0; i <= 10; i++) { 
        if (rowIndex != i && i <= noOfStudents) { 
         data[rowNumber][0] = data[i][0]; 
         data[rowNumber][1] = data[i][1]; 
         data[rowNumber][2] = data[i][2]; 
         data[rowNumber][3] = data[i][3]; 
         data[rowNumber][4] = data[i][4]; 
         data[rowNumber][5] = data[i][5]; 
         data[rowNumber][6] = data[i][6]; 
         data[rowNumber][7] = data[i][7]; 
         data[rowNumber][8] = data[i][8]; 
         data[rowNumber][9] = data[i][9]; 
         data[rowNumber][10] = data[i][10]; 
         data[rowNumber][11] = data[i][11]; 


         rowNumber++; 
        } else if (rowIndex != i && i > noOfStudents) { 
         data[rowNumber][0] = ""; 
         data[rowNumber][1] = ""; 
         data[rowNumber][2] = ""; 
         data[rowNumber][3] = ""; 
         data[rowNumber][4] = ""; 
         data[rowNumber][5] = ""; 
         data[rowNumber][6] = ""; 
         data[rowNumber][7] = ""; 
         data[rowNumber][8] = ""; 
         data[rowNumber][9] = ""; 
         data[rowNumber][10] = ""; 
         data[rowNumber][11] = ""; 

         rowNumber++; 
        } 
        } 
        if (noOfStudents == 1000) { 
         btnAdd.setEnabled(false); 
        } 
        else { 
         btnAdd.setEnabled(true); 
        } 
        if (noOfStudents == 0) { 
        btnDelete.setEnabled(false); 
        btnEdit.setEnabled(false); 
        } else { 
        btnDelete.setEnabled(true); 
        btnEdit.setEnabled(true); 
        } 

        rowIndex = table.getSelectedRow(); 
        if (data[rowIndex][0] == null || data[rowIndex][0] == "") { 
        btnEdit.setEnabled(false); 
        btnDelete.setEnabled(false); 
        } else { 
        btnEdit.setEnabled(true); 
        btnDelete.setEnabled(true); 
        } 

        table.updateUI(); 

       } 
      } else if (e.getActionCommand().equals("AddInput")) { 

       if (txtID.getText().isEmpty() || txtName.getText().isEmpty() 
         || txtMajor.getText().isEmpty()///
         || txtGPA.getText().isEmpty() || txtCampus.getText().isEmpty()|| txtEmail.getText().isEmpty() 
         || txtCurrent.getText().isEmpty()|| txtPast.getText().isEmpty()|| txtFuture.getText().isEmpty() 
         || txtNotes.getText().isEmpty() || txtPhone.getText().isEmpty()) { 
        JOptionPane.showMessageDialog(null, "PLEASE FILL IN THE BLANKS.", "ERROR!", 
        JOptionPane.ERROR_MESSAGE); 
       } 
       else { 
        int dup = 0; 
        for (int i = 0; i < 8; i++) { 
        if (txtID.getText().equals(data[i][0])) { 
         JOptionPane.showMessageDialog(null, "ID NUMBER ALREADY EXISTS.", "ERROR!", 
           JOptionPane.ERROR_MESSAGE); 
         dup++; 
        } 
        } 
        if (dup == 0) { 
        rowIndex = table.getSelectedRow(); 
        data[noOfStudents][0] = txtID.getText(); 
        data[noOfStudents][1] = txtName.getText(); 
        data[noOfStudents][2] = txtMajor.getText(); 
        data[noOfStudents][3] = txtGPA.getText(); 
        data[noOfStudents][4] = txtCampus.getText(); 
        data[noOfStudents][5] = txtAddress.getText(); 
        data[noOfStudents][6] = txtPhone.getText(); 
        data[noOfStudents][7] = txtEmail.getText(); 
        data[noOfStudents][8] = txtCurrent.getText(); 
        data[noOfStudents][9] = txtPast.getText(); 
        data[noOfStudents][10] = txtFuture.getText(); 
        data[noOfStudents][11] = txtNotes.getText(); 



        table.updateUI(); 
        frame1.dispose(); 
        noOfStudents++; 
        if (noOfStudents == 50){ 
         btnAdd.setEnabled(false); 
        } 
         else { 
          btnAdd.setEnabled(true); 
         } 
        if (data[rowIndex][0] == null) { 
         btnEdit.setEnabled(false); 
         btnDelete.setEnabled(false); 
        } else { 
         btnEdit.setEnabled(true); 
         btnDelete.setEnabled(true); 
        } 
        } 
       } 
       table.updateUI(); 
      }else if(e.getActionCommand().equals("Save")){ 
       try { 
      PrintWriter out = new PrintWriter("Tutor.txt"); 
      for(int i = 0; i < 25; i++) 
    { 
     for(int j = 0; j < 10; j++) 
     { 
      out.print(data[i][j]); 
      out.print(", "); 
     if(j == 10){ 
     out.println(); 
     } 
     }  out.flush(); 

     }} catch (FileNotFoundException ex) { 
     } 
       } else if (e.getActionCommand().equals("Update")) { 

      } 
       if (txtID.getText().isEmpty() || txtName.getText().isEmpty() 
         || txtMajor.getText().isEmpty()///
         || txtGPA.getText().isEmpty() || txtCampus.getText().isEmpty()|| txtEmail.getText().isEmpty() 
         || txtCurrent.getText().isEmpty()|| txtPast.getText().isEmpty()|| txtFuture.getText().isEmpty() 
         || txtNotes.getText().isEmpty()) { 
       } else { 
        data[rowIndex][0] = txtID.getText(); 
        data[rowIndex][1] = txtName.getText(); 
        data[rowIndex][2] = txtMajor.getText(); 
        data[rowIndex][3] = txtGPA.getText(); 
        data[rowIndex][4] = txtCampus.getText(); 
        data[rowIndex][5] = txtAddress.getText(); 
        data[rowIndex][6] = txtPhone.getText(); 
        data[rowIndex][7] = txtEmail.getText(); 
        data[rowIndex][8] = txtEmail.getText(); 
        data[rowIndex][9] = txtEmail.getText(); 
        data[rowIndex][10] = txtEmail.getText(); 
        data[rowIndex][11] = txtEmail.getText(); 


       frame1.dispose(); 
       } 
       table.updateUI(); 

     } 
    } 

    class JTextFieldLimit extends PlainDocument { 
     private int limit; 

     JTextFieldLimit(int limit) { 
     super(); 
     this.limit = limit; 
     } 

     JTextFieldLimit(int limit, boolean upper) { 
     super(); 
     this.limit = limit; 
     } 

     @Override 
     public void insertString(int offset, String str, AttributeSet attr) 
       throws BadLocationException { 
     if (str == null) { 
         return; 
        } 

     if ((getLength() + str.length()) <= limit) { 
      super.insertString(offset, str, attr); 
     } 
     } 
    } 
    public static void main(String[] args) { 
     new IAdvise(); 
    } 
} 

Студент Класс:

public class Student implements java.io.Serialize{ 
    private final String id; 
    private final String name; 
    private final String major; 
    private final String gpa; 
    private final String campus; 
    private final String address; 
    private final String number; 
    private final String email; 
    private final String current; 
    private final String past; 
    private final String future; 


    public Student(String id, String name, String major,String gpa, String campus, String address,String number, String email, String current, String past, String future, String notes) { 
     this.id = id; 
     this.name = name; 
     this.major = major; 
     this.gpa = gpa; 
     this.campus = campus; 
     this.address = address; 
     this.number = number; 
     this.email = email; 
     this.current = current; 
     this.past = past; 
     this.future = future; 
    } 
} 
+0

В следующий раз отправьте сообщение [SSCCE] (http://sscce.org/). Он покажет, что вы понимаете, что вы просите, и увеличиваете вероятность хорошего ответа. Также это сэкономит много времени для ответчика. – Seagull

+0

Номера ваших линий отключены. Строка 300 - это некоторая случайная строка в середине 'actionPerformed'. Я не понимаю, о чем вы спрашиваете ... вы спрашиваете, как создать «ArrayList» из существующего массива, или вы спрашиваете, как модифицировать код, который в настоящее время использует массив, чтобы он использовал 'ArrayList'? вместо? – ajb

+0

Я спрашиваю, как изменить код для использования ArrayList.Извините за несклонность – DSheehan56

ответ

1

Чтобы изменить код, использует массив в код, который использует ArrayList:

  1. Вместо a[i], когда она не находится на левой стороне присваивания, используйте a.get(i)

  2. Вместо a.length, использовать a.size()

  3. Вместо установки a[i] = expression: если i, как известно, в диапазоне (0 = < < i = a.length-1), использовать a.set(i, expression). Если i == a.length, вы не можете использовать a[i] = expression с массивом, но вы можете сделать это с помощью ArrayList, увеличив размер на 1: a.add(expression). Если i > a.length, так что вы хотите, чтобы добавить новый элемент в ArrayList оставляя зазор, а затем что-то вроде:

    while (a.size() < i) 
        a.add (null); 
    // at this point a.size == i 
    a.add (expression); 
    // now a.size == i+1 
    

Это должно охватывать все основные операции над массивами. Существуют некоторые служебные операции, определенные в Arrays, которые не имеют эквивалентных операций в ArrayList, например binarySearch.

0

Я использую LinkedList, он очень похож на ArrayList. Вы объявляете это так:

LinkedList<Student> StudentList = new LinkedList<Student>();

Затем вы можете добавить студентов, как это:

StudentList.add(newStudent(id,name,major,gpa,campus,address,number,email,current,past,future,notes)) 

Затем вы можете удалить студентов, как это:

StudentList.remove(Student student1); 

Вы также можете очистить все учащиеся из списка, если необходимо, следующие:

StudentsList.clear(); 

Надеюсь, это поможет!

+0

Это не ответ – Keerthivasan

+0

Да, я понял, этот вопрос старый anyways lol. Это было бы полезно, если другие приходят к этому вопросу в поисках этого решения – vedi0boy

Смежные вопросы