3

Reading Data from the Payment File

view full story
linux-howto

http://www.daniweb.com – I am having a small bit of trouble with a certain program. Here's the program requires. The program developed in Chapter 8 sent data to an external, sequential data named payment11192007 (or payment plus the system date for your computer). It opened a connection to the DataOutputStream and used the writeUTF() methods to transfer data to the disk. Write a new program named PaymentReader to read the data into a Swing interface that displays each record. Ok, so here is the first code that contains the program for chapter 8. /*         Chapter 8    BillPayer Power & Light         Programmer:  ?????????         Date:              March 3, 2010         Program Name: Bill Payer */ import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; import java.util.*; public class BillPayer extends JFrame implements ActionListener {         //Declare output stream         DataOutputStream output;         //Construct a panel for each row         JPanel firstRow = new JPanel();         JPanel secondRow = new JPanel();         JPanel thirdRow = new JPanel();         JPanel forthRow = new JPanel();         JPanel fifthRow = new JPanel();         JPanel sixthRow = new JPanel();         JPanel seventhRow = new JPanel();         JPanel eigthRow = new JPanel();         //Construt a panel for the fields and buttons         JPanel fieldPanel = new JPanel();         JPanel buttonPanel = new JPanel();         //Construct labels and text boxes         JLabel acctNumLabel = new JLabel("Account Number:                          ");                 JTextField acctNum = new JTextField(15);         JLabel pmtLabel = new JLabel("Payment Amount:");                 JTextField pmt = new JTextField(10);         JLabel firstNameLabel = new JLabel("First Name:                ");                 JTextField firstName = new JTextField(10);         JLabel lastNameLabel = new JLabel("Last Name:");                 JTextField lastName = new JTextField(20);         JLabel addressLabel = new JLabel("Address:");                 JTextField address = new JTextField(35);         JLabel cityLabel = new JLabel("City:                            ");                 JTextField city = new JTextField(10);         JLabel stateLabel = new JLabel("State:");                 JTextField state = new JTextField(2);         JLabel zipLabel = new JLabel("Zip:");                 JTextField zip = new JTextField(9);         //Construct button         JButton submitButton = new JButton("Submit");         public static void main(String[] args)         {                 //set the look and feel of the interface         try         {                 UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");         }         catch(Exception e)         {                 JOptionPane.showMessageDialog(null,"The UIManager could not set the Look and Feel for this application.","Error",JOptionPane.INFORMATION_MESSAGE);         }         BillPayer f = new BillPayer();         f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);         f.setSize(450,300);         f.setTitle("Crandall Power and Light Customer Payments");         f.setResizable(false);         f.setLocation(200,200);         f.setVisible(true);         }         public BillPayer()         {                 Container c = getContentPane();                 c.setLayout((new BorderLayout()));                 fieldPanel.setLayout(new GridLayout(8,1));                 FlowLayout rowSetup = new FlowLayout(FlowLayout.LEFT,5,3);                         firstRow.setLayout(rowSetup);                         secondRow.setLayout(rowSetup);                         thirdRow.setLayout(rowSetup);                         forthRow.setLayout(rowSetup);                         fifthRow.setLayout(rowSetup);                         sixthRow.setLayout(rowSetup);                         seventhRow.setLayout(rowSetup);                         eigthRow.setLayout(rowSetup);                 buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));         //Add Fields to rows         firstRow.add(acctNumLabel);         firstRow.add(pmtLabel);         secondRow.add(acctNum);         secondRow.add(pmt);         thirdRow.add(firstNameLabel);         thirdRow.add(lastNameLabel);         forthRow.add(firstName);         forthRow.add(lastName);         fifthRow.add(addressLabel);         sixthRow.add(address);         seventhRow.add(cityLabel);         seventhRow.add(stateLabel);         seventhRow.add(zipLabel);         eigthRow.add(city);         eigthRow.add(state);         eigthRow.add(zip);         //Add rows to panel         fieldPanel.add(firstRow);         fieldPanel.add(secondRow);         fieldPanel.add(thirdRow);         fieldPanel.add(forthRow);         fieldPanel.add(fifthRow);         fieldPanel.add(sixthRow);         fieldPanel.add(seventhRow);         fieldPanel.add(eigthRow);     //Add button to panel     buttonPanel.add(submitButton);     //Add panels to frame     c.add(fieldPanel, BorderLayout.CENTER);     c.add(buttonPanel, BorderLayout.SOUTH);     //Add functionality to buttons     submitButton.addActionListener(this);     //Get the current date and open the file     Date today = new Date();     SimpleDateFormat myFormat = new SimpleDateFormat("MMddyyyy");     String filename = "payments" + myFormat.format(today);     try     {                 output = new DataOutputStream(new FileOutputStream(filename));         }         catch(IOException io)         {                 JOptionPane.showMessageDialog(null,"The program could not create a storage location. Please check the disk drive and then run the program again.","Error",JOptionPane.INFORMATION_MESSAGE);                 System.exit(1);         }         addWindowListener(                 new WindowAdapter()                 {                         public void windowClosing(WindowEvent e)                         {                                 int answer = JOptionPane.showConfirmDialog(null,"Are you sure you want to submit the file?", "File Submisson", JOptionPane.YES_NO_OPTION);                                 if(answer == JOptionPane.YES_OPTION);                                         System.exit(0);                         }                 }         );         }         public void actionPerformed(ActionEvent e)         {                 String arg = e.getActionCommand();                 if(checkFields())                 {                         try                         {                                 output.writeUTF(acctNum.getText());                                 output.writeUTF(pmt.getText());                                 output.writeUTF(firstName.getText());                                 output.writeUTF(lastName.getText());                                 output.writeUTF(address.getText());                                 output.writeUTF(city.getText());                                 output.writeUTF(state.getText());                                 output.writeUTF(zip.getText());                                 JOptionPane.showMessageDialog(null,"The payment information has been saved.", "Submission Successful", JOptionPane.INFORMATION_MESSAGE);                         }                         catch(IOException c)                         {                                 System.exit(1);                         }                         clearFields();                 }         }         public boolean checkFields()         {                 if ((acctNum.getText().compareTo("")<1)          ||                     (pmt.getText().compareTo("")<1)              ||                     (firstName.getText().compareTo("")<1) ||                     (lastName.getText().compareTo("")<1)  ||                     (address.getText().compareTo("")<1)          ||                     (city.getText().compareTo("")<1)          ||                     (state.getText().compareTo("")<1)          ||                     (zip.getText().compareTo("")<1))                 {                         JOptionPane.showMessageDialog(null,"You must complete all fields.","Data Entry Error",JOptionPane.WARNING_MESSAGE);                         return false;                 }                 else                 {                         return true;                 }         }         public void clearFields()         {                 //Clear fields and reset the focus                 acctNum.setText("");                 pmt.setText("");                 firstName.setText("");                 lastName.setText("");                 address.setText("");                 city.setText("");                 state.setText("");                 zip.setText("");                 acctNum.requestFocus();         } } Now here is the code i'm writing (the one that needs to read the data). import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import java.io.*; public class DataRead extends JFrame {         //construct components         JTextPane textPane = new JTextPane();         //create the content pane         public Container createContentPane()         {                 //create the JTextPanel and center panel                 JPanel centerPanel = new JPanel();                         textPane = addTextToTextPane();                         JScrollPane scrollPane = new JScrollPane(textPane);                                 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);                                 scrollPane.setPreferredSize(new Dimension(580, 580));                         centerPanel.add(scrollPane);                 //create Container and set attributes                 Container c = getContentPane();                         c.setLayout(new BorderLayout(1100,50));                         c.add(centerPanel,BorderLayout.CENTER);                 return c;         }         //method to add new text to the JTextPane                 public JTextPane addTextToTextPane()                 {                         DataInputStream input;                         Document doc = textPane.getDocument();                         try                         {                                 input = new DataInputStream(new FileInputStream("11192007"));                                 acctNum.setText(readUTF());                         }                         catch(IOException e)                         {                                 System.err.println("Couldn't insert text");                         }                         return textPane;         }         //main method executes at run time                 public static void main(String args[])                 {                         JFrame.setDefaultLookAndFeelDecorated(true);                         DataRead f = new DataRead();                         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                         f.setContentPane(f.createContentPane());                         f.setSize(800,575);                         f.setVisible(true);                 } } Now, obvisouly it won't read the acctNum since it hasn't been identified. But for some odd reason, it won't read the readUTF method. It gives me this error: java:44: cannot find symbol symbol : method readUTF() location: class DataRead acctNum.setText(readUTF()); So, how am I suppose to actually make the program read data files using the readUTF method? Thanks for the help. (General)