Note that there are some explanatory texts on larger screens.

plurals
  1. PONullPointerException when trying to add a column to a JTable
    primarykey
    data
    text
    <p>I am writing a simulation Memory Manger and I was working with Jtables to display partition table. I had this working with another GUI. I recreated the GUI using a different layout style (absolute) with JPanel's and now the code for creating my partiton table fails to initialize.</p> <pre><code>import java.awt.Canvas; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import javax.swing.JFrame; import java.awt.Font; import javax.swing.JPanel; import javax.swing.border.EtchedBorder; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.DefaultComboBoxModel; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; public class mWindow extends JFrame { private static final long serialVersionUID = 1L; private final FixedMemory fpMemory = new FixedMemory(this); // Fixed Partition Memory Scheme private final Queue jobQueue = new Queue(this); // New Job Queue public JTextField statusField; public JComboBox&lt;String&gt; memScheme_cb; public DefaultTableModel ptModel; public List&lt;Job&gt; JobQueueList = new ArrayList&lt;Job&gt;(); // Job Queue public List&lt;Partition&gt; PartTableList = new ArrayList&lt;Partition&gt;(); // Partition Table // Window Constructor public mWindow() { // Setup Main Window ================================================================== getContentPane().setFont(new Font("Tahoma", Font.PLAIN, 12)); getContentPane().setLayout(null); // Set up the panel to hold control objects (buttons, Combo Box, Status Text Field // Setup Control Panel Area to contain buttons, Combo box and statusField ========================== JPanel controlPanel = new JPanel(); controlPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null)); controlPanel.setBounds(10, 10, 490, 80); controlPanel.setLayout(null); getContentPane().add(controlPanel); // Setup statusField to update current Process ================================================ statusField = new JTextField(); statusField.setBounds(145, 46, 335, 23); statusField.setFont(new Font("Tahoma", Font.PLAIN, 12)); statusField.setEditable(false); statusField.setBackground(new Color(240,240,240)); statusField.setText("No Job Processes Running"); // set initial message controlPanel.add(statusField); // Setup button to process memory scheme================================================== JButton btnProcScheme = new JButton("Process Memory"); btnProcScheme.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String memScheme = (String) memScheme_cb.getSelectedItem(); if ( memScheme == "Fixed Memory" ){ statusField.setText("Fixed Memory"); // Call a fixed partition scheme and create Job Queue fpMemory.createPartition(PartTableList); jobQueue.createJobQueue(); }else if ( memScheme == "Dynamic FirstFit" ){ statusField.setText("Dynamic FirstFit" ); }else if ( memScheme == "Dynamic BestFit" ){ statusField.setText("Dynamic BestFit"); }else if ( memScheme == "Dynamic WorstFit" ){ statusField.setText("Dynamic WorstFit"); } else if ( memScheme == ""){ statusField.setText("No Memory Scheme Selected"); } } }); btnProcScheme.setBounds(10, 11, 125, 23); controlPanel.add(btnProcScheme); // Setup combo box to choose type of memory Scheme memScheme_cb = new JComboBox&lt;String&gt;(); memScheme_cb.setBounds(145, 11, 335, 23); memScheme_cb.setModel(new DefaultComboBoxModel&lt;String&gt;(new String[] {"", "Fix Memory Partition", "Dynamic First Fit Partition", "Dynamic Best Fit Partition"})); memScheme_cb.setSelectedIndex(0); memScheme_cb.setMaximumRowCount(80); controlPanel.add(memScheme_cb); // Process Job Button================================================================== JButton btnProcJob = new JButton("Process Job Queue"); btnProcJob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Call the Queue and process Jobs based on memory scheme jobQueue.procFixedJobQueue(); } }); btnProcJob.setBounds(10, 47, 125, 23); controlPanel.add(btnProcJob); // Setup Partition Table Area ============================================================= JPanel tablePanel = new JPanel(); tablePanel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null)); tablePanel.setBounds(10, 90, 490, 370); tablePanel.setLayout(null); getContentPane().add(tablePanel); JScrollPane partTable_sp = new JScrollPane(); // container to hold table getContentPane().add(partTable_sp); // add container to layout partTable_sp.setBounds(15, 95, 480, 100); // sets where container is placed JTable partTable = new JTable(ptModel); // create new table partTable.setPreferredScrollableViewportSize(new Dimension(480,100)); // set size of container partTable_sp.setViewportView(partTable); // show table in container ptModel.addColumn("Partition Size"); // add Columns to table ptModel.addColumn("Partition Address"); // ptModel.addColumn("Access"); // ptModel.addColumn("Partition Status"); // TableColumn column = new TableColumn(); // creates column variable // Sets up predefined column widths for (int i = 0 ; i &lt; partTable.getColumnCount();i++){ column = partTable.getColumnModel().getColumn(i); column.setPreferredWidth(120); } // Setup snapshot Panel ================================================================ JPanel snapPanel = new JPanel(); snapPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null)); snapPanel.setBounds(500, 10, 120, 450); getContentPane().add(snapPanel); snapPanel.setLayout(null); Canvas snapFrame = new Canvas(); snapFrame.setBounds(505, 15, 110, 440); snapFrame.setBackground(new Color(230,230,230)); getContentPane().add(snapFrame); } // draw the segment of memory in the snapshot display at the address starting location // and the size of the memory segment (y value and the width are predetermined and are hard coded public void displaySeg(Graphics g, int address, int size){ g.setColor(new Color(245,245,245)); g.drawRect(500,address+10, 120, size); } /** * @param args */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { mWindow frame = new mWindow(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("Memory Manager v.01"); Dimension windowSize = new Dimension(650,510); frame.setMinimumSize(windowSize); frame.pack(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } } </code></pre> <p>The Stack Trace is:</p> <pre><code>java.lang.NullPointerException at mWindow.&lt;init&gt;(mWindow.java:136) at mWindow$3.run(mWindow.java:181) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) </code></pre> <p>The code problem lies here????</p> <pre><code> JTable partTable = new JTable(ptModel); // create new table partTable.setPreferredScrollableViewportSize(new Dimension(480,100)); // set size of container partTable_sp.setViewportView(partTable); // show table in container ptModel.addColumn("Partition Size"); // add Columns to table ptModel.addColumn("Partition Address"); // ptModel.addColumn("Access"); // ptModel.addColumn("Partition Status"); // TableColumn column = new TableColumn(); // creates column variable // Sets up predefined column widths for (int i = 0 ; i &lt; partTable.getColumnCount();i++){ column = partTable.getColumnModel().getColumn(i); column.setPreferredWidth(120); } </code></pre> <p>Sooo... line 136 is "ptModel.addColumn("Partition Size");" but for the life of me I can not see why it would fail (though I'm sure it is just something simple that I've overlooked)...Or maybe not. I've compared it with my original GUI code and it works fine. Any help would be greatly appreciatated!</p>
    singulars
    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