/*Filename: P_Supplemental_11.java * Created: November 7, 2012 * Author: Dustin Hunt * Purpose: Create a form using a border layout with a FileChooser and two buttons*/ package p_supplemental_11; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import javax.swing.*; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; public class P_Supplemental_11 extends JFrame { JPanel jpnl1 = new JPanel(); JPanel southPanel = new JPanel(); JButton jbtReadFile1 = new JButton("Get Student Names"); JButton jbtReadFile2 = new JButton("Get Student Grades"); JTextField jtxtFilePath = new JTextField(); JLabel jlblDesc = new JLabel("Click a button to open each file!"); JTextArea jtxtAfileContents = new JTextArea(); P_Supplemental_11() { this.setLayout(new BorderLayout(5, 10)); jpnl1.setLayout(new GridLayout(2, 2)); jpnl1.add(jlblDesc); //jpnl1.add(jtxtFilePath); southPanel.add(jbtReadFile1); southPanel.add(jbtReadFile2); add(southPanel, BorderLayout.SOUTH); add(jpnl1, BorderLayout.NORTH); add(jtxtAfileContents, BorderLayout.CENTER); jbtReadFile1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jbtReadFileActionPerformed(evt); } }); jbtReadFile2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jbtReadFileActionPerformed2(evt); } }); } // end constructor class Student { private int stuId; private String stuName; private ArrayList grades; Student(int idIn, String nameIn) { this.stuId = idIn; this.stuName = nameIn; } // end student class public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public ArrayList getGrades() { return grades; } public void setGrades(ArrayList grades) { this.grades = grades; } } // end class Student ArrayList students = new ArrayList(); private void jbtReadFileActionPerformed(ActionEvent evt) { try { JFileChooser fileChooser = new JFileChooser(); if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { java.io.File file = fileChooser.getSelectedFile(); Scanner input = new Scanner(file); StringBuilder output = new StringBuilder(); while(input.hasNext()) { students.add(new Student(input.nextInt(),input.nextLine())); } // end while jtxtAfileContents.setText(output.toString()); input.close(); } // end if }// end action method for jbtReadFile button catch (FileNotFoundException ex) { Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex); } } private void jbtReadFileActionPerformed2(ActionEvent evt) { try { JFileChooser fileChooser = new JFileChooser(); if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { java.io.File file = fileChooser.getSelectedFile(); Scanner input = new Scanner(file); while (input.hasNext()) { students.add(new Student(input.nextInt(), input.nextLine())); } // end while for (int o = 0; o < students.size(); o++) { students.get(o).setGrades(collectGrades(students.get(o).getStuId())); StringBuilder output = new StringBuilder(); output.append(students.get(o).getStuId()); output.append(students.get(o).getStuName()); output.append(averageGrade(students.get(o).getGrades())); jtxtAfileContents.setText(output.toString()); } } // end for } // end action method for jbtReadFile button catch (FileNotFoundException ex) { Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex); } } public static ArrayList collectGrades(int inId) { ArrayList outGrade = new ArrayList(); try { File inFile = new File("c:/temp/studentScores.txt"); Scanner input = new Scanner(inFile); while (input.hasNext()) { int tmpInt = input.nextInt(); double tmpDbl = input.nextDouble(); if (tmpInt == inId) { outGrade.add(tmpDbl); } // end if } // end while } catch (FileNotFoundException ex) { Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null, ex); } // end catch return outGrade; } // end method public static double averageGrade(ArrayList gradeIn) { double outAvg = 0.0; for (int y = 0; y < gradeIn.size(); y++) { outAvg += gradeIn.get(y); } // end for return outAvg / gradeIn.size(); } public static void main(String[] args) { P_Supplemental_11 frame = new P_Supplemental_11(); frame.setTitle("P_Supplemenetal_10"); frame.setSize(410, 520); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } // end main } // end public class P_Supp_11