0

I'm trying to update a jTable in another class and from what i've have come up with is to make a DefaultTableModel. I understand how to make it I just don't know how to pass the reference properly through another class.

How I have it setup

public void getWeekInfo(JTable display, int wk) {
        try {
            file = new Scanner(log);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(fileTimeEdit.class.getName()).log(Level.SEVERE, null, ex);
        }

        file.nextLine();

        table = (DefaultTableModel) display.getModel();

        if (file.next().equals("START") && file.nextInt() == wk) {
            file.nextLine();
            while (file.next().equals("SESSION")) {
                table.addRow(new Object[]{file.next(), file.next(), file.next()});
                file.nextLine();
            }
        }
        else 
            while(!(file.next().equals("START")) && file.nextInt() != wk)
                file.nextLine();

    }

and in the class that holds the jTable

private void jWeek1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        //table =  (DefaultTableModel) jFileData.getModel();
        edit.getWeekInfo(jFileData, 1);
        //edit.getWeekInfo(jFileData, (1));

    }

i've tried creating the default model before passing it and changing the parameters of getWeekInfo from

getWeekInfo(JTable display, int wk)

to

getWeekInfo(DefaultTableModel display, int wk)

but I keep getting the error java.lang.NullPointerException even though I know I have created a pointer or reference, and I have not found any other question retaining to mine, which is why I don't consider this question a duplicate.

file containing jWeek1ActionPerformed

import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author princ
 */
public final class timeKeepReview extends javax.swing.JFrame {

    private fileTimeEdit edit;
    private DefaultTableModel table;


    public timeKeepReview() {
        //this.table = (DefaultTableModel) jFileData.getModel();
        initComponents();

        disableRadioButtons();        

        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentHidden(ComponentEvent e) {
            }

            @Override
            public void componentShown(ComponentEvent e) { 


            }
        });
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jWeekGroup = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jFileData = new javax.swing.JTable();
        jWeek1 = new javax.swing.JRadioButton();
        jWeek2 = new javax.swing.JRadioButton();
        jWeek3 = new javax.swing.JRadioButton();
        jWeek4 = new javax.swing.JRadioButton();
        jWeek = new javax.swing.JLabel();
        jWeek5 = new javax.swing.JRadioButton();
        jWeek6 = new javax.swing.JRadioButton();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenuFile = new javax.swing.JMenu();
        jMenuEdit = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(500, 396));
        setPreferredSize(new java.awt.Dimension(677, 476));

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Six Week Data Collection"));

        jFileData.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Date", "Time Started", "Duration"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jFileData);

        jWeekGroup.add(jWeek1);
        jWeek1.setText("1st Week");
        jWeek1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek1.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
        jWeek1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jWeek1ActionPerformed(evt);
            }
        });

        jWeekGroup.add(jWeek2);
        jWeek2.setText("2nd Week");
        jWeek2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek2.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);

        jWeekGroup.add(jWeek3);
        jWeek3.setText("3rd Week");
        jWeek3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek3.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);

        jWeekGroup.add(jWeek4);
        jWeek4.setText("4th Week");
        jWeek4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek4.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);

        jWeek.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jWeek.setText("Week Period");

        jWeekGroup.add(jWeek5);
        jWeek5.setText("5tn Week");
        jWeek5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek5.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);

        jWeekGroup.add(jWeek6);
        jWeek6.setText("6th Week");
        jWeek6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jWeek6.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jWeek1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jWeek4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jWeek5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jWeek6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jWeek3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)))
                    .addComponent(jWeek, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jWeek2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 451, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jWeek, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE)
                .addGap(7, 7, 7)
                .addComponent(jWeek1, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(jWeek2, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(jWeek3, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(jWeek4, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(jWeek5, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addComponent(jWeek6, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
                .addContainerGap())
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
        );

        jButton1.setText("jButton1");

        jButton2.setText("jButton2");

        jMenuFile.setText("File");
        jMenuBar1.add(jMenuFile);

        jMenuEdit.setText("Edit");
        jMenuBar1.add(jMenuEdit);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(55, 55, 55)
                        .addComponent(jButton1)
                        .addGap(36, 36, 36)
                        .addComponent(jButton2))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(14, 14, 14)
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    private void jWeek1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        //table = (DefaultTableModel) jFileData.getModel();
        edit.getWeekInfo(jFileData, 1);
        //edit.getWeekInfo(jFileData, (1));
        //table.addRow(new Object[] {1,2,3});

    }                                      

    public void disableRadioButtons(){
        jWeek1.setEnabled(false);
        jWeek2.setEnabled(false);
        jWeek3.setEnabled(false);
        jWeek4.setEnabled(false);
        jWeek5.setEnabled(false);
        jWeek6.setEnabled(false);
        jFileData.setEnabled(false);
    }

    public void enableWeek(int wk){
        jFileData.setEnabled(true);
        switch(wk)
        {
            case 1: jWeek1.setEnabled(true); break;
            case 2: jWeek2.setEnabled(true); break;
            case 3: jWeek3.setEnabled(true); break;
            case 4: jWeek4.setEnabled(true); break;
            case 5: jWeek5.setEnabled(true); break;
            case 6: jWeek6.setEnabled(true); break;
        }
    }

    public void appendTable(String date, String time, String duration){
        DefaultTableModel table =  (DefaultTableModel) jFileData.getModel();
        table.addRow(new Object[] {date, time, duration});
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(timeKeepReview.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(timeKeepReview.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(timeKeepReview.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(timeKeepReview.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new timeKeepReview().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JTable jFileData;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenu jMenuEdit;
    private javax.swing.JMenu jMenuFile;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel jWeek;
    private javax.swing.JRadioButton jWeek1;
    private javax.swing.JRadioButton jWeek2;
    private javax.swing.JRadioButton jWeek3;
    private javax.swing.JRadioButton jWeek4;
    private javax.swing.JRadioButton jWeek5;
    private javax.swing.JRadioButton jWeek6;
    private javax.swing.ButtonGroup jWeekGroup;
    // End of variables declaration                   
}

and the error

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at timeKeepReview.jWeek1ActionPerformed(timeKeepReview.java:226)
    at timeKeepReview.access$000(timeKeepReview.java:18)
    at timeKeepReview$3.actionPerformed(timeKeepReview.java:106)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Emmanuel
  • 11
  • 1
  • 6
  • Without further information, I "guess" that `edit` is `null` – MadProgrammer Jan 27 '17 at 05:11
  • I made modifications and stated what I meant, but really don't see how its a duplicate if someone were to go over the post somewhat thoroughly – Emmanuel Jan 27 '17 at 05:55
  • `Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException` is why it's a duplicate. The investigation and resolution of NPEs are almost the same for all NPEs – MadProgrammer Jan 27 '17 at 05:57
  • 1
    I did a quick run through your code, `edit` is never initialised, which is the first thing you should check for when presented with a NPE, the stack trace gave you the file, class, method and line number where it occurred, which is typically a good place to start – MadProgrammer Jan 27 '17 at 05:59
  • wow thank you, you just helped me a whole bunch – Emmanuel Jan 27 '17 at 06:03

0 Answers0