2010-10-05 3 views
0
public class MainFrame extends JFrame { 
    public DefaultTableModel historyModel; 
    public DefaultTableModel dataModel; 
    public JTable historyTable; 
    public JTable dataTable; 
    public JTableHeader header; 

private void createUI() { 
     browsersTabbedPane = new BrowsersTabbedPane(); 
     add(browsersTabbedPane.getTabPane(), CENTER); 
     addDefaultBrowserComponentForTabbedPane(); 
     createActions(); 
     add(createToolBar(), BorderLayout.NORTH); 
     add(createStatusBar(), BorderLayout.SOUTH); 
     add(createDataView(dataModel,dataTable, header), BorderLayout.PAGE_END); 
     add(createHistoryView(historyModel,historyTable), BorderLayout.LINE_END); 
     add(createBigButton(browsersTabbedPane.getActiveBrowser(),dataModel,historyModel,dataTable,historyTable), BorderLayout.WEST); 

     createMenuBar(); 
    } 

private JPanel createDataView(DefaultTableModel dataModel, JTable dataTable, JTableHeader header){ 
     JPanel panel = new JPanel(); 

     Object data[][] = {{"001","vinod","Bihar","India","Biology","65","First"}, 
          {"002","Raju","ABC","Kanada","Geography","58","second"}, 
          {"003","Aman","Delhi","India","computer","98","Dictontion"}, 
          {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}, 
          {"004","Ranjan","Bangloor","India","chemestry","90","Dictontion"}}; 
     Object col[] = {"Roll","Name","State","country","Math","Marks","Grade"}; 
     dataModel = new DefaultTableModel(data,col); 
     dataTable = new JTable(dataModel); 

     dataTable.setPreferredScrollableViewportSize(new Dimension(1500,100)); 
     header = dataTable.getTableHeader(); 
     header.setBackground(Color.yellow); 
     JScrollPane pane = new JScrollPane(dataTable); 
     dataTable.setAutoResizeMode(JTable.WIDTH); 
     dataTable.doLayout(); 
     panel.add(pane); 
     return panel; 

    } 

    private JPanel createBigButton(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTable historyTable){ 
     JPanel panel = new JPanel(); 
     JButton bigbutton = new JButton("Big Button"); 
     bigbutton.addActionListener(new BigButtonListener(browser,dataModel,historyModel,dataTable, historyTable)); 
     panel.add(bigbutton); 
     return panel; 
    } 

    class BigButtonListener implements ActionListener{ 
     Image screenshot; 
     Browser bigbrowser; 

     BigButtonListener(Browser browser, DefaultTableModel dataModel, DefaultTableModel historyModel, JTable dataTable, JTable historyTable) { 
      screenshot = browser.toImage(true); 
      bigbrowser = browser; 
      historyModel = historyModel; 
      dataModel = dataModel; 
      dataTable = dataTable; 
      historyTable = historyTable; 
      //table1.addRow 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // save current image   
      //historyModel.insertRow(2,new Object[]{"Sushil"}); 
      System.out.println(historyTable.getRowCount()); 

     } 
    } 
} 

Le problème se produit lorsque le bouton Big est cliqué. Il est censé générer le nombre total de lignes de l'historiqueTable (qui est public).Java: exception dans le fil "AWT-EventQueue-0" java.lang.NullPointerException

mais c'est la sortie stacktrace

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at com.my.demo.MainFrame$BigButtonListener.actionPerformed(MainFrame.java:356) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(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) 

Répondre

2

Vous n'initialisez historyTable à une valeur non nulle.

+0

oups .... réalisé ce erreur stupide. Je vous remercie. – KJW

0

Vous utilisez la historyTable de classe variable locale à se fixer, ce qui est à son tour la mise en elle-même nulle parce que la valeur initiale était nulle, ne permettant pas vos données souhaitées à récupérer

Questions connexes